python - 与 pyQt 一起使用时箱线图不显示

标签 python matplotlib pyqt boxplot

我正在玩 Python 中的箱线图(和 bxp)。为了与 pyQt 集成,我使用了来自 matplotlib example 的代码和 stack . 当我在弹出窗口中绘制箱线图时,它工作正常。当我尝试在 pyQt 的 Canvas 上绘制一些简单的绘图时(比如 sin,或者像上面的例子),它工作正常。

问题是当我尝试在 pyQt 窗口的 Canvas 上绘制箱线图时,只显示传单。

我做错了什么吗?有没有其他方法可以在 pyQt 窗口中显示箱线图?

看起来像这样:enter image description here

我的代码-s独立版本

import matplotlib.pyplot as plt
data = [{'med': 6.0, 'q1': 4.0, 'q3': 8.0, 'whislo': 3.0, 'whishi': 10.0, 'fliers': [20, 1]}]
fig, axes = plt.subplots()
axes.bxp(data)
plt.show()

覆盖了 stack answer 中的绘图方法:

    data = [{'med': 6.0, 'q1': 4.0, 'q3': 8.0, 'whislo': 3.0, 'whishi': 10.0, 'fliers': [20, 1]}]
    ax = self.figure.add_subplot(111)
    ax.hold(False)
    ax.bxp(data)
    self.canvas.draw()

最佳答案

嘿,我已经搜索了解决方案,但找不到任何好的提示。但后来我试着玩了一点 与代码。现在它以某种方式工作(问题是行 ax.hold(False):

如果您这样调用它(来自您问题的代码):

data = [{'med': 6.0, 'q1': 4.0, 'q3': 8.0, 'whislo': 3.0, 'whishi': 10.0, 'fliers': [20, 1]}]
ax = self.figure.add_subplot(111)
ax.hold(False) // call hold BEFORE bxp(data)
ax.bxp(data)
self.canvas.draw()

这是行不通的。但是现在调用 hold AFTER bxp(data) 并且它有效(我测试了它并且有效)。

data = [{'med': 6.0, 'q1': 4.0, 'q3': 8.0, 'whislo': 3.0, 'whishi': 10.0, 'fliers': [20, 1]}]
ax = self.figure.add_subplot(111)
ax.bxp(data)
ax.hold(False) // call hold AFTER bxp(data)
self.canvas.draw()

第二个版本工作正常 ;) 我希望我能帮助你回答这个问题。

关于python - 与 pyQt 一起使用时箱线图不显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27809486/

相关文章:

python - 导入时,django-import-export csv header 之前的空行触发异常

python - 任何人都可以解释这种准确性和我的网络丢失的行为吗?

python - 返回 xy 坐标的 z 值

python - Matplotlib 设置 x 轴上的频率

python - 在 PyQt5 中获取滚动条拇指的大小/宽度?

python - 如何在 PyQt 中将键盘焦点带到 QTextEdit 上?

python - 以编程方式切换 Python PyQt QPushbutton

python - 使用 github git 在命令行上进行 git

python : How to create a 2D density map/heat map

python - pyftp put 将文件截断为 4096 位