You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Qwt Plot 是否支持设置多个不同刻度的Y轴?

Qwt Plot双Y轴多曲线实现方案

该需求完全可以实现,之前配置setAxes()后所有曲线仅关联左Y轴,核心原因是Qwt默认仅启用左Y轴(QwtPlot::yLeft)和底部X轴(QwtPlot::xBottom),右侧Y轴默认处于禁用状态,哪怕给曲线绑定了右轴也不会生效。完整实现步骤如下:

  • 启用右侧Y轴
// 启用右侧Y轴并设置为可见
qwtPlot->enableAxis(QwtPlot::yRight);
  • 为不同曲线绑定对应坐标轴
// 数值区间-4.5~4.5的曲线绑定左Y轴
smallRangeCurve->setAxes(QwtPlot::xBottom, QwtPlot::yLeft);
// 数值区间0~10000的曲线绑定右Y轴
largeRangeCurve->setAxes(QwtPlot::xBottom, QwtPlot::yRight);
  • 将曲线附加到绘图实例
smallRangeCurve->attach(qwtPlot);
largeRangeCurve->attach(qwtPlot);
  • 配置双轴自动刻度调整
    每次更新曲线数据后,分别调用两个Y轴的自动缩放接口,即可实现独立刻度适配:
qwtPlot->setAxisAutoScale(QwtPlot::yLeft);
qwtPlot->setAxisAutoScale(QwtPlot::yRight);
// 刷新绘图
qwtPlot->replot();
  • 配置双轴独立缩放功能
    Qwt默认的缩放器仅作用于左Y轴,需要额外给右Y轴绑定缩放器即可实现双轴独立缩放,示例如下(左键控制左轴缩放,右键控制右轴缩放):
// 左轴缩放器
QwtPlotMagnifier *magnifierLeft = new QwtPlotMagnifier(qwtPlot->canvas());
magnifierLeft->setAxisEnabled(QwtPlot::yLeft, true);
magnifierLeft->setAxisEnabled(QwtPlot::yRight, false);
magnifierLeft->setMouseButton(Qt::LeftButton);

// 右轴缩放器
QwtPlotMagnifier *magnifierRight = new QwtPlotMagnifier(qwtPlot->canvas());
magnifierRight->setAxisEnabled(QwtPlot::yLeft, false);
magnifierRight->setAxisEnabled(QwtPlot::yRight, true);
magnifierRight->setMouseButton(Qt::RightButton);

如果需要两个Y轴同步缩放,只需要重写缩放事件的槽函数,在左轴缩放时同步计算右轴的缩放比例更新即可。

内容的提问来源于stack exchange,提问作者jules

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 03:03:01