我想创建两个水平轴的情节。底部轴线是线性的,顶部轴线是非线性的。我有一个数据表格用于转换“底部值 - >顶部值”。我发现QwtScaleEngine提供了这个功能。但是我不能使它工作,因为在QwtScaleEngine和QwtScaleDiv的子类中定义了太多严重文档化的函数。QwtPlot自定义轴
有什么建议吗?
我想创建两个水平轴的情节。底部轴线是线性的,顶部轴线是非线性的。我有一个数据表格用于转换“底部值 - >顶部值”。我发现QwtScaleEngine提供了这个功能。但是我不能使它工作,因为在QwtScaleEngine和QwtScaleDiv的子类中定义了太多严重文档化的函数。QwtPlot自定义轴
有什么建议吗?
你想两个水平轴以有效地覆盖共用轴线两条曲线,或者仅仅以提供第一水平轴的附加表示(例如不同的单元)?这可能不是所有相关的,我只是想了解你的问题。
我首先建议你看看QwtPlot::updateAxes()
documentation。这是我对官方Qwt文档中的情节,规模引擎和规模划分之间关系的最好描述。虽然我不认为Qwt的文档记录很糟糕,但我确实认为它没有对这些概念进行高级描述。
QwtScaleDiv我看到的更多的容器类型,包含轴线边界和潜在蜱值。我看不到你需要继承QwtScaleDiv。
你是正确QwtScaleEngine
参与这种转换,但还有更多的这一点,至少在QWT 6.1.0。 QwtScaleEngine
支持setTransformation()的转换概念(QwtTransform
)。如果您的转换是一个简单的数学函数,如对数,指数,二次,三次函数等,你应该能够使用QwtPowerTransform或QwtLogTransform
。如果这些不适用,您可以实施您自己的QwtTransform
并将其分配给QwtScaleEngine
。据我所知,转换必须是双向的,这意味着实施transform
和invTransform
。根据我的经验,还必须变换值与刻度引擎相关联,包括网格线的轴线,区域等使用于其他规模的发动机比默认QwtLinearScaleEngine
转换我还没有尝试过相关的所有情节的项目,但已经工作大。这是一个强大的概念。另外,请看SVN playground(6.1.0)中的scaleengine示例。