简述
QtChart绘制极坐标图表数据和直角坐标没有太大区别,还是这四个步骤:
- 实例化图表。直角坐标使用QChart,极坐标是使用QPolarChart;
- 实例化坐标轴。依然是使用QValueAxis类;
- 实例化画布。可以使用QChartView类或QGraphicsView类;
- 实例化曲线。折线使用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 结束语
按部就班的完成这四个步骤,系统自动绘制出图像还是挺方便。