3
我在Qt上使用QCustomPlot
來繪製視頻序列的各個方面。Qt - 如何在QCustomPlot上定義軸間隔?
我想定義我的圖形的背景,以便沿着我的yAxis
定義特定區域。 我的圖是這樣的:
,我想確定我yAxis
間隔得到的東西是這樣的:
,最後的影像是屬於一個叫做泥炭程序,用於分析可能引發癲癇發作的視頻。我指的是他們沿着yAxis
定義區域的方式。
有什麼建議嗎?
我在Qt上使用QCustomPlot
來繪製視頻序列的各個方面。Qt - 如何在QCustomPlot上定義軸間隔?
我想定義我的圖形的背景,以便沿着我的yAxis
定義特定區域。 我的圖是這樣的:
,我想確定我yAxis
間隔得到的東西是這樣的:
,最後的影像是屬於一個叫做泥炭程序,用於分析可能引發癲癇發作的視頻。我指的是他們沿着yAxis
定義區域的方式。
有什麼建議嗎?
爲了有一個區域中的情節,你可以添加兩個圖表,其定義區域的界限:
//Upper bound
customPlot->addGraph();
QPen pen;
pen.setStyle(Qt::DotLine);
pen.setWidth(1);
pen.setColor(QColor(180,180,180));
customPlot->graph(0)->setName("Pass Band");
customPlot->graph(0)->setPen(pen);
customPlot->graph(0)->setBrush(QBrush(QColor(255,50,30,20)));
//Lower bound
customPlot->addGraph();
customPlot->legend->removeItem(customPlot->legend->itemCount()-1); // don't show two Band graphs in legend
customPlot->graph(1)->setPen(pen);
接下來,您可以使用setChannelFillGraph
填充邊界之間的區域:
customPlot->graph(0)->setChannelFillGraph(customPlot->graph(1));
也不要忘記分配相關值的範圍:
QVector<double> x(250);
QVector<double> y0(250), y1(250);
for (int i=0; i<250; ++i)
{
x[i] = i ;
y0[i] = upperValue;
y1[i] = lowerValue;
}
customPlot->graph(0)->setData(x, y0);
customPlot->graph(1)->setData(x, y1);
您也可以添加其他圖形以顯示一些邊界,如示例中的邊界。
非常感謝您的回答,您的建議解決了我的問題。但是我無法在繪圖上顯示文本「Pass Band」,爲什麼會出現這種情況? – NelsonR 2014-09-02 14:14:00
@NelsonR示例中顯示了該名字。要在繪製的圖上顯示文本,您應該使用'QCPItemText'。有關示例,請參閱http://www.qcustomplot.com/index.php/tutorials/items – Nejat 2014-09-02 15:43:42
感謝您的幫助,您建議的示例工作得很好。 – NelsonR 2014-09-03 02:52:32