新增超级曲线图表
This commit is contained in:
58
third/qcustomplotdemo/frmexample/frmtexturebrush.cpp
Normal file
58
third/qcustomplotdemo/frmexample/frmtexturebrush.cpp
Normal file
@@ -0,0 +1,58 @@
|
||||
#include "frmtexturebrush.h"
|
||||
#include "ui_frmtexturebrush.h"
|
||||
#include "qdebug.h"
|
||||
|
||||
frmTextureBrush::frmTextureBrush(QWidget *parent) : QWidget(parent), ui(new Ui::frmTextureBrush)
|
||||
{
|
||||
ui->setupUi(this);
|
||||
this->initForm();
|
||||
}
|
||||
|
||||
frmTextureBrush::~frmTextureBrush()
|
||||
{
|
||||
delete ui;
|
||||
}
|
||||
|
||||
void frmTextureBrush::initForm()
|
||||
{
|
||||
// add two graphs with a textured fill:
|
||||
ui->customPlot->addGraph();
|
||||
QPen redDotPen;
|
||||
redDotPen.setStyle(Qt::DotLine);
|
||||
redDotPen.setColor(QColor(170, 100, 100, 180));
|
||||
redDotPen.setWidthF(2);
|
||||
ui->customPlot->graph(0)->setPen(redDotPen);
|
||||
ui->customPlot->graph(0)->setBrush(QBrush(QPixmap(":/image/bg2.jpg"))); // fill with texture of specified image
|
||||
|
||||
ui->customPlot->addGraph();
|
||||
ui->customPlot->graph(1)->setPen(QPen(Qt::red));
|
||||
|
||||
// activate channel fill for graph 0 towards graph 1:
|
||||
ui->customPlot->graph(0)->setChannelFillGraph(ui->customPlot->graph(1));
|
||||
|
||||
// generate data:
|
||||
QVector<double> x(250);
|
||||
QVector<double> y0(250), y1(250);
|
||||
for (int i = 0; i < 250; ++i) {
|
||||
// just playing with numbers, not much to learn here
|
||||
x[i] = 3 * i / 250.0;
|
||||
y0[i] = 1 + qExp(-x[i] * x[i] * 0.8) * (x[i] * x[i] + x[i]);
|
||||
y1[i] = 1 - qExp(-x[i] * x[i] * 0.4) * (x[i] * x[i]) * 0.1;
|
||||
}
|
||||
|
||||
// pass data points to graphs:
|
||||
ui->customPlot->graph(0)->setData(x, y0);
|
||||
ui->customPlot->graph(1)->setData(x, y1);
|
||||
// activate top and right axes, which are invisible by default:
|
||||
ui->customPlot->xAxis2->setVisible(true);
|
||||
ui->customPlot->yAxis2->setVisible(true);
|
||||
// make tick labels invisible on top and right axis:
|
||||
ui->customPlot->xAxis2->setTickLabels(false);
|
||||
ui->customPlot->yAxis2->setTickLabels(false);
|
||||
// set ranges:
|
||||
ui->customPlot->xAxis->setRange(0, 2.5);
|
||||
ui->customPlot->yAxis->setRange(0.9, 1.6);
|
||||
// assign top/right axes same properties as bottom/left:
|
||||
ui->customPlot->axisRect()->setupFullAxesBox();
|
||||
ui->customPlot->setInteractions(QCP::iRangeDrag | QCP::iRangeZoom);
|
||||
}
|
||||
Reference in New Issue
Block a user