创建水平堆叠条形图

注意:这是带有窗口小部件的图表展示示例的一部分。

堆叠条形图以堆叠方式显示数据集,这些条形是相互堆叠的。堆叠按类别进行。创建水平堆叠条形图就像创建常规条形图一样,只是对于水平堆叠条形图,我们使用QHorizontalStackedBarSeries API 而不是 QBarSeries

条形集在所有条形图中都以相同的方式使用。为了说明不同条形图之间的区别,我们在所有示例中使用相同的数据。条形图可视化的数据由 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 QHorizontalStackedBarSeries;
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 Horizontal Stacked Bar Chart");
chart->setAnimationOptions(QChart::SeriesAnimations);

为了在轴上显示类别,我们首先需要创建一个 QBarCategoryAxis。在这里,我们创建一个具有类别列表的类别轴并将其添加到图表的左侧,作为 y 轴。图表将轴的所有权归自己。对于 x 轴,我们使用一个值轴,并将其对齐到底部。

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

我们还想显示图例。为此,我们从图表中获取图例指针并将其设置为可见。我们还通过设置其对齐方式为 Qt::AlignBottom 将图例放置在图表的底部。

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

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

createDefaultChartView(chart);

© 2024 Qt 公司有限公司。本文档中的文档贡献是相关所有者的版权。提供的文档是在自由软件开发基金会发布的 GNU 自由文档许可证版本 1.3 条款下授权的。Qt 和相应的标志是芬兰的 Qt 公司及其它国家/地区的商标。所有其他商标均为其各自所有者的财产。