Boxplot与pyQt一起使用时不显示

时间:2015-01-07 00:13:57

标签: python matplotlib pyqt boxplot

我在Python中玩boxplot(和bxp)。为了与pyQt集成,我使用了matplotlib examplestack中的代码。 当我在弹出窗口中绘制boxplot时,它工作正常。当我尝试在pyQt中绘制一些简单的绘图时(如sin,或者像上面的例子中那样),它可以正常工作。

问题是当我尝试在pyQt窗口中在画布上绘制boxplot时,只显示了传单。

我做错了吗?还有其他方法在pyQt窗口中显示boxplot吗?

看起来像这样:enter image description here

我的代码-s tandalone版本

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()

1 个答案:

答案 0 :(得分:1)

嘿,我已经搜索了解决方案,但找不到任何好的提示。但后来我尝试了一下 与代码。不知怎的,它现​​在有效(问题是线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()

这不起作用。但现在调用保持AFTER bxp(数据)并且它有效(我测试了它并且它起作用了。)

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()

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