Erstellen von horizontalen Prozentbalkendiagrammen

Hinweis: Dies ist Teil des Beispiels „Diagramme mit Widgets-Galerie “.

Das horizontale Prozentbalkendiagramm zeigt die Daten eines Datensatzes als Prozentsatz aller Datensätze pro Kategorie an.

Das Erstellen eines horizontalen Prozentbalkendiagramms erfolgt genau wie das Erstellen eines normalen Balkendiagramms, mit dem Unterschied, dass wir für ein horizontales Prozentbalkendiagramm die API „QHorizontalPercentBarSeries“ anstelle von „QBarSeries“ verwenden. Außerdem haben wir im Balkendiagramm einen Algorithmus zur ansprechenden Darstellung der Zahlen verwendet, damit die Nummerierung auf der y-Achse besser aussieht. Beim prozentualen Balkendiagramm ist dies nicht erforderlich, da der maximale Wert auf der y-Achse immer 100 beträgt.

Screenshot mit einem Beispiel für ein horizontales Prozentbalkendiagramm

Die Balkensätze werden in allen Balkendiagrammen auf dieselbe Weise verwendet. Um den Unterschied zwischen verschiedenen Balkendiagrammen zu veranschaulichen, verwenden wir in den Beispielen dieselben Daten. Die Daten, die das Balkendiagramm visualisiert, werden durch „QBarSet“-Instanzen definiert. Hier erstellen wir die Sets und fügen ihnen Daten hinzu. Die Daten werden hier mit dem Operator << angehängt. Alternativ könnte die Methode „append“ verwendet werden.

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;

Wir erstellen die Reihe und fügen die Balkensätze hinzu. Die Reihe übernimmt die Verwaltung der Balkensätze. Die Reihe gruppiert die Daten aus den Sätzen in Kategorien. Die ersten Werte jedes Satzes werden in der ersten Kategorie zusammengefasst, der zweite Wert in der zweiten Kategorie usw.

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

Hier erstellen wir das Diagrammobjekt und fügen die Serie hinzu. Wir legen den Titel für das Diagramm mit `setTitle` fest und aktivieren anschließend die Animationen der Serie durch Aufruf von `setAnimationOptions(QChart::SeriesAnimations)`

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

Um die Kategorien auf einer Achse anzuzeigen, müssen wir zunächst eine `QBarCategoryAxis` erstellen. Hier erstellen wir eine Kategorieachse mit einer Liste von Kategorien und fügen sie dem Diagramm auf der linken Seite hinzu, wo sie als y-Achse fungiert. Das Diagramm übernimmt die Verwaltung der Achse. Für die x-Achse verwenden wir eine Werteachse, die am unteren Rand ausgerichtet ist.

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

Außerdem möchten wir die Legende anzeigen. Dazu holen wir den Legendenzeiger aus dem Diagramm und setzen ihn auf „sichtbar“. Außerdem platzieren wir die Legende am unteren Rand des Diagramms, indem wir ihre Ausrichtung auf „ Qt::AlignBottom “ setzen.

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

Abschließend fügen wir das Diagramm zu einer Ansicht hinzu.

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.