Я хотел бы построить полулогарифмическую диаграмму с использованием Qwt. Я не знаю о Qwt, но я искал несколько примеров для руководства своим кодом. Проблема в том, что на данный момент я не нахожу кого-то. Не могли бы вы помочь мне с простым кодом? Я хочу использовать матрицу, где я могу получить значения оси x и y-оси и использовать их для создания графика. Спасибо!
Попробуй это:
QwtPlot *myPlot = new QwtPlot;
QwtPlotCurve *curve1 = new QwtPlotCurve;
QwtPointSeriesData* myData = new QwtPointSeriesData;
QVector<QPointF>* samples = new QVector<QPointF>;
samples->push_back(QPointF(1.0,1.0));
samples->push_back(QPointF(2.0,2.0));
samples->push_back(QPointF(3.0,3.0));
samples->push_back(QPointF(4.0,5.0));
myData->setSamples(*samples);
curve1->setData(myData);
curve1->attach(myPlot);
Я использовал здесь QVector, но qwtplotcurve поддерживает двойные массивы и другие вещи, но мне нравится работать с контейнерами. Вы можете выбрать лучшее для себя. QPoint содержит значения x и y.
Qwt также предлагает логарифмический масштабный движок: http://qwt.sourceforge.net/class_qwt_log_scale_engine.html
Я должен сказать, что, возможно, что-то не так с вашим Qwt, но следующий код отлично работает на моем компьютере:
#include "mainwindow.h"
#include <QApplication>
#include <qwt_plot.h>
#include <qwt_plot_curve.h>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QwtPlot *myPlot = new QwtPlot;
QwtPlotCurve *curve1 = new QwtPlotCurve;
QwtPointSeriesData* myData = new QwtPointSeriesData;
QVector<QPointF>* samples = new QVector<QPointF>;
samples->push_back(QPointF(1.0,1.0));
samples->push_back(QPointF(2.0,2.0));
samples->push_back(QPointF(3.0,3.0));
samples->push_back(QPointF(4.0,5.0));
myData->setSamples(*samples);
curve1->setData(myData);
curve1->attach(myPlot);
myPlot->show();
// MainWindow w;
// w.show();
return a.exec();
}