如何使用qchart绘制自定义散点图

qchart散点图不能设置单个大小
现在需要用qchart画出大小不同的矩形散点图应该怎么实现呢,自定义一个新的散点类吗

望采纳

  • Qt Charts 提供了一种叫做 ScatterSeries 的类来绘制散点图。它使用 QScatterDataItem 类来表示每个散点,其中包含了坐标信息以及一个可选的大小属性。你可以使用 QScatterDataItem::setSize() 函数来为每个散点设置不同的大小。
  • 下面代码在 QChart 中创建一个散点图,并使用 QScatterDataItem 类来设置散点的大小:
#include <QtCharts/QScatterSeries>
#include <QtCharts/QChart>
#include <QtCharts/QChartView>
#include <QtCharts/QScatterDataItem>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    // 创建散点图序列
    QScatterSeries *series = new QScatterSeries();

    // 向散点图序列中添加散点
    series->append(0, 0);
    series->append(2, 4);
    series->append(3, 3);
    series->append(7, 7);
    series->append(10, 10);

    // 设置每个散点的大小
    QScatterDataItem *item = series->dataProxy()->itemAt(0);
    item->setSize(10);

    item = series->dataProxy()->itemAt(1);
    item->setSize(20);

    item = series->dataProxy()->itemAt(2);
    item->setSize(30);

    item = series->dataProxy()->itemAt(3);
    item->setSize(40);

    item = series->dataProxy()->itemAt(4);
    item->setSize(50);

    // 创建图表
    QChart *chart = new QChart();
    chart->addSeries(series);
    chart->createDefaultAxes();
    chart->setTitle("Simple scatterchart example");

    // 创建图表视图
    QChartView *chartView = new QChartView(chart);
    chartView->setRenderHint(QPainter::Antialiasing);
    chartView->resize(400, 300);
    chartView->show();

    return a.exec();
}