pyqtgraph 轴未正确显示

Posted

技术标签:

【中文标题】pyqtgraph 轴未正确显示【英文标题】:pyqtgraph axes not displaying correctly 【发布时间】:2017-12-19 20:32:40 【问题描述】:

我最近在将 pyqt 从 PyQt4 更新到 PyQt5 后开始使用 PyQt5,并注意到使用 pyqtgraph 生成的所有绘图的轴位置存在持续错误(见附图)。 x 轴不延伸穿过窗口的底部,并且 y 轴未连接到左下角的 x 轴。此外,大 x 值或小 y 值的轴标签无法准确表示轨迹。

下图是运行产生的:

import pyqtgraph as pg
pg.plot([0,1,2,3,4,5,6,7,8,9],[1,2,4,5,7,8,10,11,13,14])

我在我的 Windows 10 机器上使用 anaconda 创建了一个新的 python 环境来测试这个问题。 conda list qt 的输出是:

pyqt                      5.6.0                    py35_2
pyqtgraph                 0.10.0                   py35_0
qt                        5.6.2                    vc14_5  [vc14]

我尝试使用不同版本的 Python(3.5.3 和 3.6)并删除并重新安装所有 anaconda 发行版,但均未成功。我真的很感激这个问题的任何帮助。提前致谢。

编辑 1: 我应该提到我在外接显示器上运行这个程序。我刚刚发现,如果我将绘图窗口拖到较小的笔记本电脑显示器上,轴就会卡入正确的位置。我还没有发现如何在外接显示器上正确显示绘图,但我怀疑这可能与 QT DPI 缩放环境变量有关。

【问题讨论】:

在特定的桌面配置中遇到了同样的问题:如果我的主显示器上有桌面比例,例如125%,我在上面启动我的应用程序,然后在辅助监视器上没有比例,我在上面显示图形窗口,图形绘制将关闭。如果我删除桌面比例,将两个监视器设置为使用相同的比例,或者将图形窗口移动到主监视器,问题就会消失。不确定桌面比例是如何实际应用的,但似乎 pyqtgraph 或它使用的某些 api 错误地假设辅助监视器上的比例相同。 【参考方案1】:

我找到了两种可能的解决方案:

1) 在Qt GUI事件循环开始设置DPI后可以添加下面这行app.setAttribute(QtCore.Qt.AA_Use96Dpi)

2) 外接显示器的 Windows 设置显示缩放参数必须与主显示器(在我的情况下是笔记本电脑显示器)的显示缩放值匹配。

【讨论】:

这实际上破坏了我的第一台显示器上的轴......我想知道是否有人对这个多显示器问题有另一种可能的解决方案

以上是关于pyqtgraph 轴未正确显示的主要内容,如果未能解决你的问题,请参考以下文章

Vaadin Crud 用户界面。轴未正确排序

PyQtGraph 图在 Qt MainWindow 上显示不正确

pyqtgraph 不显示整个数据

使用 matplot 的熊猫在 x 轴日期上显示不正确的年份

plotWidget 不显示正确的标签

PyQtGraph 不会调整大小