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

Boxplot not showing up when used with pyQt

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

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

我做错了什么吗?在 pyQt window?

中还有其他显示箱线图的方法吗

看起来像这样:

我的代码-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()

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