具有等轴和自动缩放的 QwtPlot

Posted

技术标签:

【中文标题】具有等轴和自动缩放的 QwtPlot【英文标题】:QwtPlot with equal axes and auto scale 【发布时间】:2018-10-30 17:05:41 【问题描述】:

我正在使用QWidgets 开发一个Qt5 应用程序。我正在使用Qwt-library 中的QwtPlot 在我的工具中绘制实时数据。我正在通过ui.qwtPlot->setAxisAutoScale(axis) 将我的绘图轴设置为自动缩放,因为我希望我的绘图能够自动调整到传入的数据。

现在一些客户要求提供具有等距轴 x 和 y 的绘图。我找到了QwtPlotRescaler,这似乎是为此目的的正确选择。我已经成功地将它添加到我的绘图中,如果需要,它现在具有相等的轴。 (我可以通过附加按钮禁用/启用此功能。)

但是我注意到,每当我激活等轴时,自动缩放功能就会被禁用。使用我动态传入的数据,我仍然希望有一个重新缩放的图。每当内容(图中的项目)发生变化时,轴应该会自动增长和收缩。所以就像正常的自动缩放一样,但同时保持轴相等。我该如何存档?

您需要任何其他信息吗? 感谢您的帮助!

【问题讨论】:

请提供minimal reproducible example 【参考方案1】:

假设您的 y 轴应该依赖于 x 轴,这样您的坐标系始终有一个固定的纵横比。

那么Qwt必须调整y轴的范围,并且不得不忽略数据在y方向的边界区间——没有办法两者都做。

可以做的是在 x 轴上添加额外的边距,以便 y 轴的范围根据纵横比增长 - 最后包括数据的边界间隔。但是,QwtPlotRescaler 并没有实现找到良好的利润来实现这一目标。

但如果有帮助的话:自动缩放器所做的就是根据曲线的 boundingRect 调整比例。您也可以在更改数据时自行执行此操作。

【讨论】:

以上是关于具有等轴和自动缩放的 QwtPlot的主要内容,如果未能解决你的问题,请参考以下文章

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

Qwt 重新缩放轴

变形--缩放 scale()

具有自动缩放组的多个模板文件和使用 Terraform 的启动配置

无法通过 cloudformation 创建具有自动缩放功能的 AWS EMR

具有服务结构群集自动缩放的 VMSS