Erstellen von Streuungsdiagrammen

Hinweis: Dies ist Teil des Beispiels für die Galerie Diagramme mit Widgets.

Um Punktdiagramme zu erstellen, wird eine QScatterSeries Instanz benötigt. Hier erstellen wir eine Instanz der Streuungsreihe und legen den Typ und die Breite des Umrisses für die Streuungspunkte 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. Wir können die 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);

Als Pinsel der Streuungsreihe können wir ein Bild definieren. Hier ist das Bild ein 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));

Zum Schluss aktivieren wir die Kantenglättung, setzen den Diagrammtitel und fügen die Streuungsreihe in das Diagramm ein. Wir deaktivieren auch den Schlagschatten, da er 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 Legendenmarker verwenden.

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

Das Diagramm ist nun bereit zur Anzeige.

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