我在Python中玩boxplot(和bxp)。为了与pyQt集成,我使用了matplotlib example和stack中的代码。 当我在弹出窗口中绘制boxplot时,它工作正常。当我尝试在pyQt中绘制一些简单的绘图时(如sin,或者像上面的例子中那样),它可以正常工作。
问题是当我尝试在pyQt窗口中在画布上绘制boxplot时,只显示了传单。
我做错了吗?还有其他方法在pyQt窗口中显示boxplot吗?
看起来像这样:
我的代码-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()
答案 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()
第二个版本工作正常;) 我希望我能帮助你解决这个问题。