我想做的是为曲线添加彩色边距。因为我们可以使用
customPlot->graph(0)->setBrush(QBrush(QColor(0, 0, 255, 20)));
在曲线本身和 x 轴之间填充颜色,这将给出如下结果:
正如 QCustomPlot 网站上发布的那样,目标是为曲线和另一条曲线之间的部分而不是 x 轴着色。我已经完成了一项工作,但这不是最好的解决方案,我正在尽最大努力不使用它。它包括用一条具有彩色区域宽度的线绘制一条曲线。我将展示代码和结果
代码:
QVector<double> x{1e8, 5e9, 1e10, 1.5e10};
QVector<double> y{-40, -40, -35, -32};
QVector<double> y2{-39.5, -39.5, -34.5, -31.5};
ui->widget->addGraph();
ui->widget->graph(0)->setData(x, y);
ui->widget->addGraph();
ui->widget->graph(1)->setData(x, y2);
QPen blueDotPen;
blueDotPen.setColor(QColor(0, 0, 255, 20));
blueDotPen.setWidth(25);
ui->widget->graph(1)->setPen(blueDotPen);
ui->widget->graph(1)->setLineStyle(QCPGraph::lsLine);
ui->widget->xAxis->setLabel("x");
ui->widget->yAxis->setLabel("y");
ui->widget->xAxis->setRange(1e8, 1.5e10);
ui->widget->yAxis->setRange(-30, -50);
ui->widget->replot();
所以问题是我可以通过任何其他方式得到图中显示的结果吗?可能就像一开始提出的那样?
setChannelFillGraph(QCPGraph *targetGraph)
允许您设置图表将填充到哪个图表。
您可以替换设置 QPen 的代码块并将其分配给具有以下内容的图表以获得您所描述的内容:
QBrush brush(QColor(0,0,255,20));
ui->widget->graph(0)->setBrush(brush);
ui->widget->graph(0)->setChannelFillGraph(ui->widget->graph(1));
ui->widget->graph(1)->setPen(Qt::NoPen);