Qwt 重新缩放轴
Qwt rescale axis
我有一个 QwtPlot,我希望改变轴比例而不必改变自己绘制的点的值。
在我的应用程序中,我在 [-10,10] V 范围(两个轴)内以伏特为单位绘制点。我想通过将每个轴乘以 nm/V 中的值来校准每个轴,以将刻度转换为纳米。我想这样做而不必改变点本身的价值。完成这项工作最实用的方法是什么?
谢谢
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));
我有一个 QwtPlot,我希望改变轴比例而不必改变自己绘制的点的值。
在我的应用程序中,我在 [-10,10] V 范围(两个轴)内以伏特为单位绘制点。我想通过将每个轴乘以 nm/V 中的值来校准每个轴,以将刻度转换为纳米。我想这样做而不必改变点本身的价值。完成这项工作最实用的方法是什么?
谢谢
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));