gpt4 book ai didi

plot - QwtPlot 自定义 Axis

转载 作者:行者123 更新时间:2023-12-01 05:37:34 25 4
gpt4 key购买 nike

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

有什么建议?

最佳答案

您是否希望两个水平 Axis 有效地覆盖共享一个轴的两个图,或者只是提供第一个水平 Axis 的附加表示(例如不同的单位)?它可能不是那么相关,我只是想了解您的问题。

我首先建议您查看 QwtPlot::updateAxes() documentation .这是我在官方 Qwt 文档中找到的关于绘图、比例引擎和比例划分之间关系的最佳描述。虽然我不认为 Qwt 的文档很糟糕,但我确实认为它缺乏对概念的高级描述。

QwtScaleDiv 我认为更像是一种容器类型,包含 Axis 边界和潜在的刻度值。我看不出您有必要对 QwtScaleDiv 进行子类化。

您是正确的 QwtScaleEngine 参与了这种转换,但还有一点,至少在 Qwt 6.1.0 中。 QwtScaleEngine支持带有 QwtTransform 的转换概念 ( setTransformation() ) .如果您的转换是一个简单的数学函数,例如对数、指数、二次、三次函数等,您应该可以使用 QwtPowerTransform QwtLogTransform .如果这些不适用,您可以实现自己的 QwtTransform并将其分配给 QwtScaleEngine .据我所知,转换必须是双向的,这意味着同时实现 transforminvTransform .根据我的经验,它还必须转换与比例引擎关联的 Axis 相关联的所有绘图项目的值,包括网格线、区域等。我没有尝试在其他比例引擎上使用转换而不是默认 QwtLinearScaleEngine ,但效果很好。这是一个强大的概念。另外,看看 SVN playground 中的 scaleengine 示例(6.1.0)。

关于plot - QwtPlot 自定义 Axis ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7812406/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com