Graphique à barres empilées avec Qt : QStackedBarSeries

Utilisation fondamentale

  • Création d'une série empilée :``` QStackedBarSeries *barSeries = new QStackedBarSeries();

  • Ajout de jeux de données : Utilisez des objets QBarSet pour définir chaque série et ajoutez-les à la série principale. ``` QBarSet *dataSet1 = new QBarSet("Données A"); QBarSet *dataSet2 = new QBarSet("Données B");

    *dataSet1 << 8 << 6 << 7 << 5 << 9; *dataSet2 << 2 << 4 << 3 << 6 << 1;

    barSeries->append(dataSet1); barSeries->append(dataSet2);

  • Personnalisation visuelle :

    • Changer la couleur d’un ensemble de barres via setColor().
    • Définir une étiquette lisible avec setLabel().
    dataSet1->setColor(Qt::green);
    dataSet2->setColor(Qt::orange);
    
  • Intégration dans un graphique :``` QChart *chart = new QChart(); chart->addSeries(barSeries); chart->setTitle("Exemple de graphique à barres empilées"); chart->setAnimationOptions(QChart::SeriesAnimations);

  • Configuration des axes :

    • Utilisez QBarCategoryAxis pour les catégories (ex. : mois, zones).
    • Utilisez QValueAxis pour l’axe des valeurs numériques.
    QBarCategoryAxis *axisX = new QBarCategoryAxis();
    axisX->append("Janvier");
    axisX->append("Février");
    axisX->append("Mars");
    axisX->append("Avril");
    axisX->append("Mai");
    
    QValueAxis *axisY = new QValueAxis();
    axisY->setRange(0, 15);
    
    chart->setAxisX(axisX, barSeries);
    chart->setAxisY(axisY, barSeries);
    
  • Affichage du graphique :``` QChartView *view = new QChartView(chart); view->setRenderHint(QPainter::Antialiasing); view->setMinimumSize(800, 600); view->show();

    
    

Exemple complet

#include <QApplication>
#include <QtCharts>

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    QStackedBarSeries *series = new QStackedBarSeries();

    QBarSet *setA = new QBarSet("Ventilation");
    QBarSet *setB = new QBarSet("Réception");

    *setA << 12 << 15 << 10 << 18 << 14;
    *setB << 8 << 6 << 11 << 5 << 9;

    setA->setColor(Qt::blue);
    setB->setColor(Qt::darkCyan);

    series->append(setA);
    series->append(setB);

    QChart *chart = new QChart();
    chart->addSeries(series);
    chart->setTitle("Trafic mensuel - Empilé");
    chart->setAnimationOptions(QChart::SeriesAnimations);

    QBarCategoryAxis *axisX = new QBarCategoryAxis();
    axisX->append("Jan");
    axisX->append("Fév");
    axisX->append("Mar");
    axisX->append("Avr");
    axisX->append("Mai");

    QValueAxis *axisY = new QValueAxis();
    axisY->setRange(0, 25);

    chart->setAxisX(axisX, series);
    chart->setAxisY(axisY, series);

    QChartView *view = new QChartView(chart);
    view->setRenderHint(QPainter::Antialiasing);
    view->setMinimumSize(800, 600);
    view->show();

    return app.exec();
}

Fonctionnalités avancées

  • Mise à jour dynamique : Utilisez un QTimer pour modifier les valeurs en temps réel. ``` QTimer *timer = new QTimer(); connect(timer, &QTimer::timeout, setA, setB { setA->replace(2, qrand() % 20); setB->replace(1, qrand() % 20); }); timer->start(1500);

  • Interaction utilistaeur : Réagissez aux clics sur une barre ou un segment. ``` connect(series, &QStackedBarSeries::clicked, [](int index, QBarSet *set) { qDebug() << "Sélectionné :" << set->label() << "à l'indice" << index; });

  • Style personnalisé : Modifiez l’apparence des labels ou des lignes de grille. ``` axisX->setLabelsAngle(30); axisX->setGridLineVisible(false);

  • Comparaison multiple : Ajoutez plusieurs séries empilées pour compaerr différentes distributions. ``` QStackedBarSeries *series1 = new QStackedBarSeries(); QStackedBarSeries *series2 = new QStackedBarSeries();

    chart->addSeries(series1); chart->addSeries(series2);

    
    

Conseils pratiques

  • Évitez les grandes quantités de données (>10 000 points) ; privilégiez QBarSeries pour de meilleures performances.
  • Vérifiez que le module Qt Charts est bien installé sur la plateforme cible.
  • Choisissez des couleurs contrastées pour garantir une lecture claire des segmetns empilés.

En combinant ces éléments, vous pouvez créer des visualisations puissantes et interactives avec QStackedBarSeries. Pour plus de détails, consultez la documentation officielle : QStackedBarSeries Class.

Étiquettes: Qt Charts QStackedBarSeries QBarSet QBarCategoryAxis QValueAxis

Publié le 7 août à 07h09