上一节介绍了Qt中多个曲线绘制的基本方法,本文对其进行拓展,介绍多条曲线绘制时如何自动更改颜色以及自动更改线条类型的方法。
目录
1、前言
基础部分就不过多介绍了,不懂得可以直接参考:QCustomPlot基础教程(一)——QCustomPlot的安装及基础实例,直接上代码。
2、代码示例
代码如下:
QCustomPlot *customPlot = ui->customPlot;//创建customPlot
QPen pen;
QStringList lineNames;
lineNames << "lsNone" << "lsLine" << "lsStepLeft" << "lsStepRight" << "lsStepCenter" << "lsImpulse";
for (int i = QCPGraph::lsNone; i <= QCPGraph::lsImpulse; ++i)
{
customPlot->addGraph();
pen.setColor(QColor(qSin(i*1+1.2)*80+80, qSin(i*0.3+0)*80+80, qSin(i*0.3+1.5)*80+80));
customPlot->graph()->setPen(pen); // 设置画笔
customPlot->graph()->setName(lineNames.at(i-QCPGraph::lsNone));//图例名称
customPlot->graph()->setLineStyle((QCPGraph::LineStyle)i); // 线段风格
customPlot->graph()->setScatterStyle(QCPScatterStyle(QCPScatterStyle::ssCircle, 5));//设置散点形状
customPlot->legend->setVisible(true); // 显示图例
QVector<double> x(15), y(15);
for (int j=0; j<15; ++j)
{
x[j] = j/15.0 * 5*3.14 + 0.01;
y[j] = 7*qSin(x[j])/x[j] - (i-QCPGraph::lsNone)*5 + (QCPGraph::lsImpulse)*5 + 2;
}
customPlot->graph()->setData(x, y);//x和y
customPlot->graph()->rescaleAxes(true);//自动调整XY轴的范围
}
3、运行结果
4、解释说明
这里主要解释一下LineStyle和ScatterShape这两个函数。
enum QCPGraph::LineStyle
定义图形线在绘图中的视觉表示方式。
参数 | 描述 |
---|---|
lsNone | 数据点不与任何线连接 |
lsLine | 数据点由一条直线连接 |
lsStepLeft | 将线绘制为阶跃,其中阶跃高度为左侧数据点的值 |
lsStepRight | 将线绘制为阶跃,其中阶跃高度为右侧数据点的值 |
lsStepCenter | 当阶跃位于两个数据点之间时,将线绘制为阶跃 |
lsImpulse | 每个数据点由一条平行于值轴的线表示(脉冲线) |
enum QCPScatterStyle::ScatterShape
设置散点形状
名称 | 形状 | 描述 |
---|---|---|
ssNone | 不绘制散点符号 | |
ssDot | . | 单点 |
ssCross | x | 交叉 |
ssPlus | + | 加 |
ssCircle | o | 圆圈 |
ssDisc | ● | 实心圆圈(圈内为pen颜色) |
… | … | … |