散布図の作成

注:これは 「ウィジェット付きチャート ギャラリー」のサンプルの一部です。

3つのデータ系列(青い丸(散布図1)、緑の四角(散布図2)、オレンジの星(散布図3))を含む散布図のスクリーンショット

散布図を作成するには、QScatterSeries インスタンスが必要です。ここでは、散布図シリーズインスタンスを作成し、散布点のタイプと輪郭線の幅を設定します。

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

表示するデータを追加します。append() メンバ関数を使用するか、ストリーム演算子を使用することができます。

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

散布シリーズのブラシを画像として定義することができます。ここでは、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));

最後に、アンチエイリアシングを有効にし、チャートのタイトルを設定して、散布シリーズをチャートに追加します。また、チャートビューのみが表示されるアプリケーションでは見栄えが悪くなるため、ドロップシャドウは無効にしています。

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

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

また、散布図の点を凡例マーカーとして使用することもできます。

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

これで、チャートを表示する準備が整いました。

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