qcustomplot绘制多y轴
时间: 2025-07-29 22:07:22 浏览: 10
在使用 QCustomPlot 进行图表绘制时,实现多个 Y 轴功能可以通过添加多个 `QCPAxis` 对象来完成。QCustomPlot 支持在左右两侧添加多个 Y 轴,并为每个轴设置不同的数据关联。
### 实现多 Y 轴图表绘制的步骤
#### 1. 创建多个 Y 轴
可以在主 Y 轴的左侧或右侧添加额外的 Y 轴。以下是一个添加多个 Y 轴的示例代码:
```cpp
// 创建主 Y 轴(左侧)
QCPAxis *yAxisPrimary = customPlot->yAxis;
// 添加一个新的 Y 轴到右侧
QCPAxis *yAxisSecondary = customPlot->addAxis(QCPAxis::atRight);
yAxisSecondary->setLabel("Second Y Axis");
// 添加第三个 Y 轴到右侧(与第二个 Y 轴并列)
QCPAxis *yAxisTertiary = customPlot->addAxis(QCPAxis::atRight);
yAxisTertiary->setLabel("Third Y Axis");
```
#### 2. 设置不同 Y 轴的刻度和标签
每个 Y 轴可以独立设置其范围、标签、刻度线样式等:
```cpp
// 设置第一个 Y 轴的范围
yAxisPrimary->setRange(0, 100);
// 设置第二个 Y 轴的范围
yAxisSecondary->setRange(0, 200);
// 设置第三个 Y 轴的范围
yAxisTertiary->setRange(0, 300);
```
#### 3. 为每个 Y 轴关联不同的数据曲线
每个数据曲线可以绑定到不同的 Y 轴上:
```cpp
// 添加第一条曲线并绑定到主 Y 轴
QCPGraph *graph1 = customPlot->addGraph();
graph1->setPen(QPen(Qt::blue));
graph1->setName("Graph 1");
graph1->setData(xData, yData1);
graph1->valueAxis()->setRange(0, 100);
// 添加第二条曲线并绑定到第二个 Y 轴
QCPGraph *graph2 = customPlot->addGraph(yAxisSecondary);
graph2->setPen(QPen(Qt::red));
graph2->setName("Graph 2");
graph2->setData(xData, yData2);
graph2->valueAxis()->setRange(0, 200);
// 添加第三条曲线并绑定到第三个 Y 轴
QCPGraph *graph3 = customPlot->addGraph(yAxisTertiary);
graph3->setPen(QPen(Qt::green));
graph3->setName("Graph 3");
graph3->setData(xData, yData3);
graph3->valueAxis()->setRange(0, 300);
```
#### 4. 调整布局以避免重叠
当添加多个 Y 轴时,可能需要调整坐标轴标签的对齐方式,以确保图表布局美观:
```cpp
// 设置右侧 Y 轴的 TickLabel 对齐方式
yAxisSecondary->setTickLabelPadding(10);
yAxisTertiary->setTickLabelPadding(20);
```
#### 5. 设置图例
可以启用图例以帮助区分不同数据曲线:
```cpp
customPlot->legend->setVisible(true);
customPlot->legend->setBrush(QBrush(QColor(255, 255, 255, 230)));
```
### 总结
QCustomPlot 提供了灵活的 API 来支持多 Y 轴的绘制。通过添加多个 `QCPAxis` 并将不同的数据曲线绑定到不同的 Y 轴上,可以实现复杂的多轴图表。同时,可以对每个 Y 轴进行独立的样式和范围设置,确保图表清晰可读。
阅读全文
相关推荐



















