QwtPlot自定义轴

QwtPlot自定义轴,plot,axis,qwt,Plot,Axis,Qwt,我想创建具有两个水平轴的绘图。底部轴是线性的,顶部轴是非线性的。我有一个数据表,用于转换“底部值->顶部值”。我发现QwtScaleEngine提供了这个功能。但我不能让它工作,因为在QwtScaleEngine和QwtScaleDiv的子类中定义了太多文档化不好的函数 有什么建议吗 您希望两个水平轴有效地覆盖共享一个轴的两个图,还是仅提供第一个水平轴的附加表示(例如,不同单位)?可能没那么重要,我只是想了解你的问题 我首先建议你看一看。这是我在Qwt官方文档中发现的关于绘图、缩放引擎和缩放分割

我想创建具有两个水平轴的绘图。底部轴是线性的,顶部轴是非线性的。我有一个数据表,用于转换“底部值->顶部值”。我发现QwtScaleEngine提供了这个功能。但我不能让它工作,因为在QwtScaleEngine和QwtScaleDiv的子类中定义了太多文档化不好的函数


有什么建议吗

您希望两个水平轴有效地覆盖共享一个轴的两个图,还是仅提供第一个水平轴的附加表示(例如,不同单位)?可能没那么重要,我只是想了解你的问题

我首先建议你看一看。这是我在Qwt官方文档中发现的关于绘图、缩放引擎和缩放分割之间关系的最好描述。虽然我不认为Qwt的文档记录不好,但我确实认为它缺乏对概念的高级描述

我认为QwtScaleDiv更像是一种容器类型,包含轴边界和可能的刻度值。我看不出有必要将QwtScaleDiv子类化

您在这个转换中所涉及的内容是正确的,但至少在Qwt 6.1.0中还有更多内容
QwtScaleEngine
支持带有的转换概念()。如果您的转换是一个简单的数学函数,如对数、指数、二次、三次函数等,您应该能够使用或。如果这些不适用,您可以实现自己的
QwtTransform
,并将其分配给
QwtScaleEngine
。据我所知,转换必须是双向的,这意味着同时实现
transform
invTransform
。根据我的经验,它还必须转换与缩放引擎关联的轴关联的所有打印项目的值,包括网格线、分区等。我没有尝试在默认缩放引擎以外的其他缩放引擎上使用转换,但这非常有效。这是一个强有力的概念。另外,请看(6.1.0)中的scaleengine示例