Erstellen von Streudiagrammen

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

Screenshot eines Streudiagramms mit drei Datenreihen: blaue Kreise (Streudiagramm 1), grüne Quadrate (Streudiagramm 2) und orangefarbene Sterne (Streudiagramm 3)

Zum Erstellen von Streudiagrammen wird eine QScatterSeries-Instanz benötigt. Hier erstellen wir eine Instanz einer Streudiagrammreihe und legen den Typ und die Breite der Umrandung für die Streupunkte fest.

auto series0 = new QScatterSeries;
series0->setName("scatter1");
series0->setMarkerShape(QScatterSeries::MarkerShapeCircle);
series0->setMarkerSize(15.0);

auto series1 = new QScatterSeries;
series1->setName("scatter2");
series1->setMarkerShape(QScatterSeries::MarkerShapeRectangle);
series1->setMarkerSize(20.0);

auto series2 = new QScatterSeries;
series2->setName("scatter3");
series2->setMarkerShape(QScatterSeries::MarkerShapeRectangle);
series2->setMarkerSize(30.0);

Wir fügen die anzuzeigenden Daten hinzu. Dazu können wir die Member-Funktion `append()` oder den Stream-Operator verwenden.

series0->append(0, 6);
series0->append(2, 4);
series0->append(3, 8);
series0->append(7, 4);
series0->append(10, 5);

*series1 << QPointF(1, 1) << QPointF(3, 3) << QPointF(7, 6) << QPointF(8, 3) << QPointF(10, 2);
*series2 << QPointF(1, 5) << QPointF(4, 6) << QPointF(6, 3) << QPointF(9, 5);

Wir können den Pinsel der Streu-Serie als Bild definieren. Hier handelt es sich um einen Stern, der mit „ QPainterPath “ erstellt wurde.

QPainterPath starPath;
starPath.moveTo(28, 15);
for (int i = 1; i < 5; ++i) {
    starPath.lineTo(14 + 14 * qCos(0.8 * i * M_PI),
                    15 + 14 * qSin(0.8 * i * M_PI));
}
starPath.closeSubpath();

QImage star(30, 30, QImage::Format_ARGB32);
star.fill(Qt::transparent);

QPainter painter(&star);
painter.setRenderHint(QPainter::Antialiasing);
painter.setPen(QRgb(0xf6a625));
painter.setBrush(painter.pen().color());
painter.drawPath(starPath);

series2->setBrush(star);
series2->setPen(QColor(Qt::transparent));

Abschließend aktivieren wir das Anti-Aliasing, legen den Diagrammtitel fest und fügen die Streudiagrammreihe zum Diagramm hinzu. Außerdem deaktivieren wir den Schlagschatten, da dieser in einer Anwendung, in der nur die Diagrammansicht angezeigt wird, nicht gut aussehen würde.

auto chart = new QChart;
chart->addSeries(series0);
chart->addSeries(series1);
chart->addSeries(series2);

chart->setTitle("Simple Scatter Chart");
chart->createDefaultAxes();
chart->setDropShadowEnabled(false);

Wir können die Streupunkte auch als Legendenmarkierungen verwenden.

chart->legend()->setMarkerShape(QLegend::MarkerShapeFromSeries);

Das Diagramm ist nun bereit zur Anzeige.

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