我正在玩 Python 中的箱线图(和 bxp)。为了与 pyQt 集成,我使用了来自 matplotlib example 的代码和 stack . 当我在弹出窗口中绘制箱线图时,它工作正常。当我尝试在 pyQt 的 Canvas 上绘制一些简单的绘图时(比如 sin,或者像上面的例子),它工作正常。
问题是当我尝试在 pyQt 窗口的 Canvas 上绘制箱线图时,只显示传单。
我做错了什么吗?有没有其他方法可以在 pyQt 窗口中显示箱线图?
看起来像这样:
我的代码-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/