qcustomplot 绘制散点图 不同颜色 ,给出完整的qt代码, 稳定版本的qcustomplot ,不要写出现编译不过
时间: 2024-10-24 17:03:43 浏览: 29
在QCustomPlot中,你可以通过设置每个数据点的颜色来绘制散点图并区分不同的颜色。下面是一个使用QCustomPlot稳定版本(例如5.0.3以上)绘制不同颜色散点图的完整Qt代码示例:
```cpp
#include <QApplication>
#include <QGraphicsScene>
#include <QGraphicsView>
#include <QCustomPlot>
#include <QVector>
#include <QColor>
// 定义一个数据点结构
struct DataPoint {
double x;
double y;
QColor color; // 数据点的颜色
};
class ScatterPlotExample : public QWidget {
public:
ScatterPlotExample(QWidget *parent = nullptr) : QWidget(parent) {
// 初始化QCustomPlot
QCustomPlot *plot = new QCustomPlot(this);
plot->setRenderHint(QPainter::Antialiasing);
// 设置X轴和Y轴
QCPAxis *xAxis = new QCPAxis(plot, Qt::Horizontal);
plot->xAxis->setLabel("X Axis");
QCPAxis *yAxis = new QCPAxis(plot, Qt::Vertical);
plot->yAxis->setLabel("Y Axis");
// 设置散点样式
QCPScatterStyle *scatterStyle = new QCPScatterStyle();
scatterStyle->setPenWidth(3);
scatterStyle->brushColorScale()->attach(plot->style()->penColorScale()); // 使用颜色映射
// 创建一个散点数据列表,每个数据点都有对应的color
QVector<DataPoint> dataPoints{
{0, 0, QColor(Qt::red)}, // 红色
{1, 1, QColor(Qt::green)}, // 绿色
{2, 4, QColor(Qt::blue)} // 蓝色
};
// 遍历数据点并绘制到散点图上
foreach (const DataPoint& dp, dataPoints) {
QCPRange range(xAxis, yAxis, dp.x, dp.y);
scatterStyle->addSeries(range, dp.color.name());
}
// 添加散点图到QCustomPlot
plot->addPlottable(scatterStyle, "Scatter Points");
// 设置窗口布局
QVBoxLayout *layout = new QVBoxLayout();
layout->addWidget(plot);
setLayout(layout);
}
};
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
ScatterPlotExample example;
example.setWindowTitle("QCustomPlot Colorful Scatter Plot");
example.resize(800, 600);
example.show();
return app.exec();
}
```
这个例子中,`DataPoint`结构包含x、y坐标及对应的颜色,然后我们在循环中为每个数据点创建一个范围并使用其颜色。颜色通过`QColor`对象直接传递给`addSeries`方法。
阅读全文