Visualización de registros de temperatura con barras negativas

Nota: Esto es parte del ejemplo de la Galería de Gráficos con Widgets. Para nuestro ejemplo utilizamos datos de temperatura.

Captura de pantalla del gráfico con barras negativas que muestra los registros de temperatura de -52 a 52 Celsius a lo largo de doce meses de enero a diciembre, siendo el mínimo el gráfico azul y el máximo el gráfico verde.

Primero creamos dos conjuntos de barras y les añadimos los datos. Un conjunto representa las temperaturas mínimas y otro las máximas.

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;

Creamos la serie y le añadimos los conjuntos de barras. La serie se apropia de los conjuntos de barras.

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

Aquí creamos el objeto gráfico y le añadimos las series. Establecemos el título del gráfico con setTitle, y luego activamos las animaciones de la serie llamando a setAnimationOptions(QChart::SeriesAnimations)

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

Para que las categorías se muestren en un eje, necesitamos crear un QBarCategoryAxis. Aquí creamos un eje de categorías con una lista de categorías y lo añadimos al gráfico alineado en la parte inferior, actuando como eje x. El gráfico se apropia del eje. El gráfico se apropia del eje. Para el eje y utilizamos un eje de valores, alineado a la izquierda. Cambiamos el rango del eje y, ya que da mejores resultados que el autoescalado.

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);

También queremos mostrar la leyenda. Para ello, tomamos el puntero de la leyenda del gráfico y lo ponemos en visible. También colocamos la leyenda en la parte inferior del gráfico estableciendo su alineación en Qt::AlignBottom.

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

Por último, añadimos el gráfico a una vista.

createDefaultChartView(chart);

El gráfico está listo para ser mostrado.

© 2026 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.