本文為QCustomPlot官方教程的中文翻譯版始鱼。
本教程使用customPlot
指針指向 QCustomPlot 實(shí)例。如果您在 QtCreator 中提升了一個(gè)小部件,可以通過 ui->customPlot
(或您為小部件指定的任何名稱)訪問相應(yīng)的小部件扫皱。
您可以通過customPlot->addGraph()在圖中創(chuàng)建一個(gè)新圖形 臀稚。然后逗扒,通過customPlot->graph(0)->setData(..)為圖形分配一些數(shù)據(jù)點(diǎn)蜈出,例如以兩個(gè)QVector<double>的形式表示 x 和 y (鍵和值)秩伞。QCustomPlot 使用術(shù)語鍵 和值 而不是x 和y的原因是為了允許更靈活地分配哪個(gè)軸具有什么作用吁伺。因此饮睬,如果您將左軸定義為“關(guān)鍵軸”,將底部定義為“值軸”篮奄,您可以在圖的左側(cè)繪制一個(gè)直立的圖形捆愁。默認(rèn)情況下,QCustomPlot 小部件有四個(gè)軸:customPlot->xAxis, yAxis, xAxis2, 和 QCPAxis類型的yAxis2
窟却,對應(yīng)于下昼丑、左、上夸赫、右軸菩帝。它們的范圍定義了繪圖的哪個(gè)部分當(dāng)前可見:customPlot->xAxis->setRange(-1, 1)。
要對繪圖進(jìn)行任何類型的更改茬腿,請調(diào)用customPlot->replot() 呼奢。請注意,當(dāng)小部件調(diào)整大小和觸發(fā)內(nèi)置用戶交互時(shí)切平,將自動(dòng)發(fā)生重新繪制握础。例如用鼠標(biāo)拖動(dòng)軸范圍和用鼠標(biāo)滾輪縮放這樣的用戶交互。
// generate some data:
QVector<double> x(101), y(101); // initialize with entries 0..100
for (int i=0; i<101; ++i)
{
x[i] = i/50.0 - 1; // x goes from -1 to 1
y[i] = x[i]*x[i]; // let's plot a quadratic function
}
// create graph and assign data to it:
customPlot->addGraph();
customPlot->graph(0)->setData(x, y);
// give the axes some labels:
customPlot->xAxis->setLabel("x");
customPlot->yAxis->setLabel("y");
// set axes ranges, so we see all data:
customPlot->xAxis->setRange(-1, 1);
customPlot->yAxis->setRange(0, 1);
customPlot->replot();
輸出應(yīng)如下所示悴品。
刻度步長和標(biāo)簽由軸當(dāng)前使用的軸刻度自動(dòng)選擇 禀综。這是 類型QCPAxisTicker的一個(gè)實(shí)例简烘,可以通過如xAxis->ticker().訪問。您可以通過 xAxis->ticker()->setTickCount(6)調(diào)整ticks 數(shù)量定枷,ticker 嘗試創(chuàng)建的大致ticks 數(shù)量孤澎。默認(rèn)軸標(biāo)記非常適合簡單的數(shù)字顯示,但也有專門的類依鸥,例如時(shí)間跨度亥至、日歷日期、類別贱迟、pi(或其他符號單位)和對數(shù)軸姐扮。有關(guān)詳細(xì)信息,請參閱 QCPAxisTicker文檔衣吠。
軸的刻度標(biāo)簽(數(shù)字)永遠(yuǎn)不會(huì)超出小部件邊框茶敏,即使它們變寬也是如此。這是由于默認(rèn)啟用的自動(dòng)頁邊距計(jì)算缚俏。如果刻度標(biāo)簽和軸標(biāo)簽需要更多空間惊搏,它會(huì)使軸矩形縮小。如果您不希望自動(dòng)確定邊距忧换,請通過調(diào)用customPlot->axisRect()->setAutoMargins(QCP::msNone)禁用該行為恬惯。然后您可以通過 customPlot->axisRect()->setMargins(..).手動(dòng)調(diào)整邊距。