분산형 차트 만들기

참고: 이것은 위젯이 있는 차트 갤러리 예제의 일부입니다.

스캐터 차트를 만들려면 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);

차트를 표시할 준비가 되었습니다.

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