使用负条形展示温度记录

注意:这属于图表与工具画廊示例的一部分。在我们的示例中,我们使用温度数据。

首先我们创建两个条形系列集,并将数据附加到它们上面。一个系列集代表最低气温,另一个系列集代表最高气温。

auto low = new QBarSet("Min");
auto high = new QBarSet("Max");

*low << -52 << -50 << -45.3 << -37.0 << -25.6 << -8.0
     << -6.0 << -11.8 << -19.7 << -32.8 << -43.0 << -48.0;
*high << 11.9 << 12.8 << 18.5 << 26.5 << 32.0 << 34.8
      << 38.2 << 34.8 << 29.8 << 20.4 << 15.1 << 11.8;

我们创建系列,并将条形系列集附加到它上面。系列将拥有条形系列集的所有权。

auto series = new QStackedBarSeries;
series->append(low);
series->append(high);

这里我们创建图表对象,并将系列添加到它上面。我们使用 setTitle 设置图表的标题,然后通过调用 setAnimationOptions(QChart::SeriesAnimations) 启用系列的动画。

auto chart = new QChart;
chart->addSeries(series);
chart->setTitle("Temperature records in Celcius");
chart->setAnimationOptions(QChart::SeriesAnimations);

为了在轴上显示类别,我们需要创建一个 QBarCategoryAxis。在这里,我们创建了一个包含类别列表的类别轴,并将其添加到图表中,与底部对齐,充当 x 轴。图表将拥有轴的所有权。对于 y 轴,我们使用一个值轴,与左侧对齐。我们更改 y 轴的范围,因为这比自动缩放给出了更好的结果。

QStringList categories = {
    "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"
};

auto axisX = new QBarCategoryAxis;
axisX->append(categories);
axisX->setTitleText("Month");
chart->addAxis(axisX, Qt::AlignBottom);
auto axisY = new QValueAxis;
axisY->setRange(-52, 52);
axisY->setTitleText("Temperature [&deg;C]");
chart->addAxis(axisY, Qt::AlignLeft);
series->attachAxis(axisX);
series->attachAxis(axisY);

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

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

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

createDefaultChartView(chart);

图表已准备好显示。

© 2024 The Qt Company Ltd. 本文档中的贡献属于各自的所有权。本提供的文档根据 Free Software Foundation 发布的 GNU 自由文档许可协议的第 1.3 版本许可。Qt 和相应的标志是芬兰和/或其他国家的 The Qt Company Ltd. 的商标。所有其他商标均属于其各自的所有者。