创建水平条形图
注意:这是 Charts with Widgets Gallery 示例的一部分。
QHorizontalBarChart 以单独的条形组表示数据集,条形组分属于类别。QHorizontalBarChart 与 QBarChart 的工作方式相同,只不过条形是在图表中水平绘制的。
在所有条形图中使用条形集的方式相同。为了说明不同条形图之间的差异,我们在所有示例中都使用相同的数据。条形图可视化的数据由 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 QHorizontalBarSeries; 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 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); axisX->applyNiceNumbers();
我们还想显示图例。为了做到这一点,我们从图表中获取图例指针并将其设置为可见。我们还通过将其对齐设置为 Qt::AlignBottom 将图例放置在图表的底部。
chart->legend()->setVisible(true); chart->legend()->setAlignment(Qt::AlignBottom);
最后,我们将图表添加到视图中。我们还为图表视图启用抗锯齿。
createDefaultChartView(chart);
图表已准备好显示。
© 2024 Qt 公司有限公司。本文件中包含的文档贡献权属于其各自的所有者。本文件中提供的文档根据自由软件基金会发布的 GNU 自由文档许可证第 1.3 版的条款获得许可。Qt 和相应的标志是 Qt 公司在芬兰和其他国家/地区的商标。所有其他商标均属于其各自的所有者。