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 结束语

按部就班的完成这四个步骤,系统自动绘制出图像还是挺方便。

猜你喜欢

转载自blog.csdn.net/lusanshui/article/details/84399280
今日推荐