与 pyQt 一起使用时箱线图不显示
Posted
技术标签:
【中文标题】与 pyQt 一起使用时箱线图不显示【英文标题】:Boxplot not showing up when used with pyQt 【发布时间】:2015-01-07 00:13:57 【问题描述】:我在 Python 中使用 boxplot(和 bxp)。为了与 pyQt 集成,我使用了来自 matplotlib example 和 stack 的代码。 当我在弹出窗口中绘制箱线图时,它工作正常。当我尝试在 pyQt 中的画布上绘制一些简单的图时(如 sin,或如上例所示),它工作正常。
问题是当我尝试在 pyQt 窗口中的画布上绘制箱线图时,只显示传单。
我做错了吗?还有其他方法可以在 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()
【问题讨论】:
执行您的第一个示例时出现错误(TypeError: 'AxesSubplot' object is not iterable)。你用的是哪个 Python/pyqt/matplotlib 版本。 对不起,错字。fig, axes = plt.subplot()
应该是 fig, axes = plt.subplots()
。我在问题中修复了它。 myplotlib 1.4.2,python 3.4.2,pyqt 4.11
我现在可以确认您所看到的(也在 PySide 中),但我无法帮助您。对不起。
我已经回答了你的问题,希望我提供给你的解决方案也对你有用。
【参考方案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()
这不起作用。但是现在在 bxp(data) 之后调用 hold 并且它可以工作(我对其进行了测试并且它工作)。
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()
第二个版本运行良好;) 我希望我能帮助你回答这个问题。
【讨论】:
以上是关于与 pyQt 一起使用时箱线图不显示的主要内容,如果未能解决你的问题,请参考以下文章