Création de graphiques en nuage de points

Remarque : ceci fait partie de l'exemple « Galerie de graphiques avec widgets ».

Capture d'écran d'un nuage de points comportant trois séries de données : des cercles bleus (série 1), des carrés verts (série 2) et des étoiles orange (série 3)

Pour créer des graphiques de nuages de points, une instance de QScatterSeries est nécessaire. Ici, nous créons une instance de série de nuages de points, puis nous définissons le type et la largeur du contour des points du nuage.

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

Nous ajoutons les données à afficher. Nous pouvons utiliser la fonction membre `append()` ou l'opérateur de flux.

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

Nous pouvons définir le pinceau de la série de points comme étant une image. Ici, l’image est une étoile créée à l’aide de QPainterPath.

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

Enfin, nous activons l’anticrénelage, définissons le titre du graphique et ajoutons la série de points au graphique. Nous désactivons également l’ombre portée, car elle ne rendrait pas bien sur une application n’affichant que la vue du graphique.

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

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

Nous pouvons également utiliser les points de la série de nuages de points comme marqueurs de légende.

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

Le graphique est prêt à être affiché.

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