为 QCustomPlot 中两条曲线之间的区域着色

问题描述 投票:0回答:1

我想做的是为曲线添加彩色边距。因为我们可以使用

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();

所以问题是我可以通过任何其他方式得到图中显示的结果吗?可能就像一开始提出的那样?

qcustomplot
1个回答
0
投票

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);
© www.soinside.com 2019 - 2024. All rights reserved.