Création de graphiques à barres horizontaux exprimés en pourcentage

Remarque : cet exemple fait partie de la galerie « Graphiques avec widgets ».

Le graphique à barres horizontales en pourcentage affiche les données d'un ensemble sous forme de pourcentage par rapport à l'ensemble des ensembles de chaque catégorie.

La création d’un graphique à barres horizontales en pourcentage s’effectue de la même manière que celle d’un graphique à barres classique, à la différence près que, pour un graphique à barres horizontales en pourcentage, on utilise l’API QHorizontalPercentBarSeries au lieu de QBarSeries. De plus, dans le graphique à barres, nous avons utilisé un algorithme de mise en forme des nombres pour améliorer l'apparence de la numérotation de l'axe des y. Avec le graphique à barres en pourcentage, cela n’est pas nécessaire, car la valeur maximale de l’axe des y est toujours 100.

Capture d'écran présentant un exemple de graphique à barres horizontal en pourcentage

Les ensembles de barres sont utilisés de la même manière dans tous les graphiques à barres. Pour illustrer la différence entre les différents graphiques à barres, nous utilisons les mêmes données dans les exemples. Les données visualisées par le graphique à barres sont définies par des instances de QBarSet. Ici, nous créons les ensembles et y ajoutons des données. Les données sont ajoutées ici à l’aide de l’opérateur <<. Il est également possible d’utiliser la méthode 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;

Nous créons la série et y ajoutons les ensembles de barres. La série prend en charge les ensembles de barres. La série regroupe les données des ensembles en catégories. Les premières valeurs de chaque ensemble sont regroupées dans la première catégorie, les deuxièmes valeurs dans la deuxième catégorie, etc.

auto series = new QHorizontalPercentBarSeries;
series->append(set0);
series->append(set1);
series->append(set2);
series->append(set3);
series->append(set4);

Ici, nous créons l’objet graphique et y ajoutons la série. Nous définissons le titre du graphique avec `setTitle`, puis activons les animations de la série en appelant `setAnimationOptions(QChart::SeriesAnimations)`

auto chart = new QChart;
chart->addSeries(series);
chart->setTitle("Simple Horizontal Percent Bar Chart");
chart->setAnimationOptions(QChart::SeriesAnimations);

Pour afficher les catégories sur un axe, nous devons d’abord créer un QBarCategoryAxis. Ici, nous créons un axe de catégories avec une liste de catégories et l’ajoutons au graphique sur le côté gauche, où il fait office d’axe des y. Le graphique prend en charge cet axe. Pour l’axe des x, nous utilisons un axe de valeurs, aligné sur le bas.

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

Nous souhaitons également afficher la légende. Pour ce faire, nous récupérons le pointeur de la légende à partir du graphique et le rendons visible. Nous plaçons également la légende au bas du graphique en définissant son alignement sur « Qt::AlignBottom ».

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

Enfin, nous ajoutons le graphique à une vue.

createDefaultChartView(chart);

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