Qwt 重新缩放轴

Posted

技术标签:

【中文标题】Qwt 重新缩放轴【英文标题】:Qwt rescale axis 【发布时间】:2016-04-18 08:57:26 【问题描述】:

我有一个 QwtPlot,我希望更改轴比例,而不必更改自己绘制的点的值。

在我的应用程序中,我在 [-10,10] V 范围(两个轴)内以伏特为单位绘制点。我想通过将每个轴乘以 nm/V 的值来校准每个轴,以将比例转换为纳米。我想这样做而不必改变积分本身的价值。完成这项工作最实用的方法是什么?

谢谢

【问题讨论】:

qwt.sourceforge.net/… QwtPlot::setAxisScale() 也重新缩放轴和绘图区域。我需要更改轴中的值,但将绘图留在同一区域。这意味着图上的点显示在同一个位置,但轴具有不同的值。 您不能在不移动数据的情况下更改坐标轴值。您要么必须 a)缩放数据(我假设这对您来说效率太低),要么 b)缩放轴 label values 我在禁用刻度上的科学记数法时遇到了类似的问题,您必须执行类似的操作(子类 QwtScaleDraw)才能进行 nm/V 缩放:***.com/questions/32761035/… 【参考方案1】:

qwt 不允许您在不影响数据的情况下更改轴值。但是,您可以 做的是更改轴标签。这将为您提供您正在寻找的明显缩放效果,但根本无需操作您的数据。

class QConversionScaleDraw : public QwtScaleDraw

public:

    explicit QConversionScaleDraw(double conversionFactor)
    : m_conversionFactor(conversionFactor)
    

    

    virtual QwtText label(double value) const override;
    
        return QwtScaleDraw::label(value * m_conversionFactor);
    

private:

    double m_conversionFactor;                                                

;

然后使用它:

QwtPlot myplot;
double nmToV = 0.612; // or whatever
myplot->setAxisScaleDraw(xBottom, new QConversionScaleDraw(nmToV));

【讨论】:

以上是关于Qwt 重新缩放轴的主要内容,如果未能解决你的问题,请参考以下文章

使用 ctrl + 鼠标滚轮进行缩放

QWT zoomer plus panner 连续重绘

急!!!qwt曲线超过坐标轴范围 坐标轴却不会自动放大,已经有设置坐标轴自动缩放了

qwt plot - 如何根据鼠标光标进行缩放

Qwt 绘图自动缩放不起作用

Qt问题,QPainter绘制一个时间轴,基本的画图已经实现,纯绘制,现在还有平移和缩放两个要求,