Qt散点图、折线图、柱状图
时间: 2025-02-04 08:15:21 浏览: 116
### 如何在Qt中实现散点图、折线图和柱状图
#### 实现散点图与折线图
为了在Qt中创建散点图和折线图,可以通过`QChart`模块中的相应类完成。具体来说,对于散点图而言,应该利用`QScatterSeries`;而对于折线图,则需采用`QLineSeries`。
```cpp
#include <QtWidgets/QApplication>
#include <QtCharts/QChartView>
#include <QtCharts/QLineSeries>
#include <QtCharts/QScatterSeries>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
// 创建折线序列对象并添加数据点
QLineSeries *lineSeries = new QLineSeries();
lineSeries->append(0, 6);
lineSeries->append(2, 4);
lineSeries->append(3, 8);
// 创建散点序列对象并添加数据点
QScatterSeries *scatterSeries = new QScatterSeries();
scatterSeries->append(1, 5);
scatterSeries->append(2, 7);
scatterSeries->setMarkerSize(10.0);
// 构建图表实例并将上述两个系列加入其中
QChart *chart = new QChart();
chart->addSeries(lineSeries);
chart->addSeries(scatterSeries);
chart->setTitle("Simple combined Line and Scatter Chart Example");
chart->createDefaultAxes();
// 设置视窗组件显示整个图形界面
QChartView *chartView = new QChartView(chart);
chartView->setRenderHint(QPainter::Antialiasing);
QMainWindow window;
window.setCentralWidget(chartView);
window.resize(400, 300);
window.show();
return a.exec();
}
```
此段代码展示了如何在同一张图表上同时展示折线图和散点图的效果[^1]。
#### 绘制柱状图
当涉及到柱状图的制作时,在Qt Charts里有专门针对此类需求设计好的API——即`QBarSet`配合`QHorizontalPercentBarSeries`或`QVerticalBarSeries`等不同类型的条形/柱状图系列来达成目的。
```cpp
#include <QtWidgets/QApplication>
#include <QtCharts/QChartView>
#include <QtCharts/QBarCategoryAxis>
#include <QtCharts/QBarSet>
#include <QtCharts/QStackedBarSeries>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
// 定义类别轴上的标签名称列表
QStringList categories {"Jan", "Feb", "Mar"};
QBarCategoryAxis *axisX = new QBarCategoryAxis();
axisX->append(categories);
// 初始化三个不同的数据集(每个月份对应一组)
QBarSet *set0 = new QBarSet("Apples");
set0 << 1 << 2 << 3;
QBarSet *set1 = new QBarSet("Oranges");
set1 << 4 << 0 << 0;
QBarSet *set2 = new QBarSet("Bananas");
set2 << 0 << 5 << 0;
// 使用堆叠方式组合这些数据集合成为一个完整的柱状图系列
QStackedBarSeries *series = new QStackedBarSeries();
series->append(set0);
series->append(set1);
series->append(set2);
// 将构建完毕后的系列关联至新建立起来的一个空白画布之上
QChart *chart = new QChart();
chart->addSeries(series);
chart->setTitle("Simple stacked bar chart example");
// 配置坐标轴参数...
chart->setAnimationOptions(QChart::SeriesAnimations);
chart->createDefaultAxes();
chart->setAxisX(axisX, series);
// ...最后呈现给用户查看
QChartView *view = new QChartView(chart);
view->setRenderHint(QPainter::Antialiasing);
view->resize(400, 300);
view->show();
return app.exec();
}
```
这段示例说明了怎样运用Qt Charts API去生成一个简单的堆积型柱状图,并设置了横坐标的分类标签[^3]。
阅读全文
相关推荐
















