1. 程式人生 > >QtChart實現曲線圖表繪製之極座標系

QtChart實現曲線圖表繪製之極座標系

簡述

QtChart繪製極座標圖表資料和直角座標沒有太大區別,還是這四個步驟:

  1. 例項化圖表。直角座標使用QChart,極座標是使用QPolarChart;
  2. 例項化座標軸。依然是使用QValueAxis類;
  3. 例項化畫布。可以使用QChartView類或QGraphicsView類;
  4. 例項化曲線。折線使用QLineSeries類,曲線使用QSplineSeries類

一個簡單的極座標圖表如下所示:
在這裡插入圖片描述

程式碼之路

按上述步驟執行即可,當然還需包含QtChart的使用環境,具體可以參閱上篇繪製直角座標系的文章[https://blog.csdn.net/lusanshui/article/details/84395651

]。
標頭檔案程式碼

private:
QLineSeries *seriesWD;  //曲線宣告
QPolarChart *chartWD; //極座標圖表宣告
QValueAxis *angleAxis; //角座標,相對應於直角座標系的X軸
QValueAxis* radiaAxis;//極座標,相對應於直角座標系的Y軸
QChartView* chartViewWD; //畫布宣告

原始檔相應程式碼

   //極座標風向圖
   //曲線
   seriesWD = new QLineSeries();
   seriesWD->setName("WD");
   //圖表
   chartWD = new QPolarChart();
   chartWD->addSeries(seriesWD);
   chartWD->setTheme(QChart::ChartThemeBlueCerulean);  //設定圖表theme
   chartWD->setTitle("Polor WindDirection Chart");
   //座標軸
   angleAxis = new QValueAxis();
   angleAxis->setTickCount(9);
//    angleAxis->setLabelFormat("%.1f");
   angleAxis->setLabelFormat("%d");
   angleAxis->setShadesVisible(true);
   angleAxis->setShadesBrush(QBrush(QColor(249, 249, 255)));
   chartWD->addAxis(angleAxis, QPolarChart::PolarOrientationAngular);
   radialAxis = new QValueAxis();
   radialAxis->setTickCount(9);
   radialAxis->setLabelFormat("%d");
   chartWD->addAxis(radialAxis, QPolarChart::PolarOrientationRadial);
   seriesWD->attachAxis(radialAxis);
   seriesWD->attachAxis(angleAxis);
   //畫布
   chartViewWD = new QChartView();
   chartViewWD->setChart(chartWD);
   chartViewWD->setRenderHint(QPainter::Antialiasing);

   //加入佈局
   mainLayout = new QHBoxLayout();
   setLayout(mainLayout);
   mainLayout->addWidget(chartViewWD);

過程非常清楚,當然,還需要設定座標軸的範圍、給繪製的曲線符點值。

//賦值
for (int i = 0; i <= 360; i+=30)
{
  seriesWD->append(i, (i / 200.0)*200.0);
}
radialAxis->setRange(0, 200);
angleAxis->setRange(0, 360);

3 結束語

按部就班的完成這四個步驟,系統自動繪製出影象還是挺方便。