2014-09-02 117 views
3

我在Qt上使用QCustomPlot來繪製視頻序列的各個方面。Qt - 如何在QCustomPlot上定義軸間隔?

我想定義我的圖形的背景,以便沿着我的yAxis定義特定區域。 我的圖是這樣的:

My plot (example)

,我想確定我yAxis間隔得到的東西是這樣的:

enter image description here

,最後的影像是屬於一個叫做泥炭程序,用於分析可能引發癲癇發作的視頻。我指的是他們沿着yAxis定義區域的方式。

有什麼建議嗎?

回答

5

爲了有一個區域中的情節,你可以添加兩個圖表,其定義區域的界限:

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

您也可以添加其他圖形以顯示一些邊界,如示例中的邊界。

+0

非常感謝您的回答,您的建議解決了我的問題。但是我無法在繪圖上顯示文本「Pass Band」,爲什麼會出現這種情況? – NelsonR 2014-09-02 14:14:00

+1

@NelsonR示例中顯示了該名字。要在繪製的圖上顯示文本,您應該使用'QCPItemText'。有關示例,請參閱http://www.qcustomplot.com/index.php/tutorials/items – Nejat 2014-09-02 15:43:42

+0

感謝您的幫助,您建議的示例工作得很好。 – NelsonR 2014-09-03 02:52:32