如何在 QCPBars 柱状图中正确表示和读取每个柱子所对应的数值?
时间: 2024-10-24 15:07:56 浏览: 15
在QCustomPlot库中,QCPBars是一种用于绘制柱状图的数据系列类型。为了在QCustomPlot中正确表示并读取每个柱子所对应的数值,你需要按照以下步骤操作:
1. **设置数据**: 创建一个包含你要展示的x轴值和y轴值的数组。例如,你可以使用`QVector<double>`存储x坐标,`QVector<double>`或`QPair<QString, double>`(如果需要显示标签)存储每个柱子的高度。
```cpp
QVector<double> xValues = {1, 2, 3, 4, 5};
QVector<double> yValues = {10, 20, 30, 40, 50}; // 或者
QMap<QString, double> barLabelsAndValues = {
{"Label1", 10}, {"Label2", 20}, ...
};
```
2. **创建QCPBars对象**: 在QCustomPlot上添加一个新的数据系列,并指定类型为QCPBars。
```cpp
QCPBars* barsSeries = new QCPBars(plot);
barsSeries->setData(xValues, yValues); // 使用数值数组
// 或者
barsSeries->setData(barLabelsAndValues); // 使用映射
```
3. **设置轴范围**: 确保X轴和Y轴的范围能够正确显示所有数据。
```cpp
plot->xAxis->setRange(QCPRange(0, xValues.last()));
plot->yAxis->setRange(QCPRange(0, yValues.max()));
```
4. **读取柱子数值**: 当用户交互时,如点击柱子,可以使用`QCPBars::hitTest()`函数获取柱子的位置及其对应数值。
```cpp
QPointF hitPoint; // 点击位置
if (barsSeries->hitTest(hitPoint)) {
int index = barsSeries->indexOfHit(hitPoint);
double value = xValues[index]; // 如果使用数值数组
// 或 double value = barLabelsAndValues.value(barsSeries->indexToKey(index)); // 如果使用映射
}
```
阅读全文