创建百分比柱形图

注: 这是 "带 Widgets 图库的图表"示例的一部分。

百分比条形图显示的是数据集在每个类别的所有数据集中所占的百分比。

创建百分比条形图与创建普通条形图一样,只不过对于百分比条形图,我们使用的是QPercentBarSeries API 而不是QBarSeries 。此外,在条形图中,我们使用了漂亮数字算法来使 Y 轴编号看起来更好。而百分比柱形图则不需要这样,因为 Y 轴的最大值始终是 100。

所有柱形图都以相同的方式使用柱形集。为了说明各种柱状图之间的区别,我们在所有示例中使用相同的数据。条形图可视化的数据由QBarSet 实例定义。在这里,我们创建数据集并向其添加数据。这里使用 << 操作符追加数据。或者也可以使用 append 方法。

auto set0 = new QBarSet("Jane");
auto set1 = new QBarSet("John");
auto set2 = new QBarSet("Axel");
auto set3 = new QBarSet("Mary");
auto set4 = new QBarSet("Samantha");

*set0 << 1 << 2 << 3 << 4 << 5 << 6;
*set1 << 5 << 0 << 0 << 4 << 0 << 7;
*set2 << 3 << 5 << 8 << 13 << 8 << 5;
*set3 << 5 << 6 << 7 << 3 << 4 << 5;
*set4 << 9 << 7 << 5 << 3 << 1 << 2;

我们创建系列并将条形集添加到系列中。系列拥有条形集的所有权。系列将数据从数据集分组到类别。每组数据的第一个值归入第一个类别,第二个值归入第二个类别,等等。

auto series = new QPercentBarSeries;
series->append(set0);
series->append(set1);
series->append(set2);
series->append(set3);
series->append(set4);

在此,我们创建图表对象并添加系列。我们使用 setTitle 设置图表标题,然后调用 setAnimationOptions(QChart::SeriesAnimations) 打开系列动画。

auto chart = new QChart;
chart->addSeries(series);
chart->setTitle("Simple Percent Bar Chart");
chart->setAnimationOptions(QChart::SeriesAnimations);

要在坐标轴上显示类别,我们需要先创建一个QBarCategoryAxis 。在这里,我们创建了一个包含类别列表的类别轴,并将其添加到图表中,作为 x 轴对齐到底部。图表拥有轴的所有权。对于 Y 轴,我们使用值轴,并将其排列在左侧。

QStringList categories {"Jan", "Feb", "Mar", "Apr", "May", "Jun"};
auto axisX = new QBarCategoryAxis;
axisX->append(categories);
chart->addAxis(axisX, Qt::AlignBottom);
series->attachAxis(axisX);
auto axisY = new QValueAxis;
chart->addAxis(axisY, Qt::AlignLeft);
series->attachAxis(axisY);

我们还希望显示图例。为此,我们从图表中获取图例指针,并将其设置为可见。我们还将图例的对齐方式设置为Qt::AlignBottom ,从而将其置于图表底部。

chart->legend()->setVisible(true);
chart->legend()->setAlignment(Qt::AlignBottom);

最后,我们将图表添加到视图中。

createDefaultChartView(chart);

图表就可以显示了。

© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.