我正在阅读 Wes McKinney 的一本书,在介绍 pandas 的部分中,他给出了一个绘制 pandas 数据框的简单示例。这是我写的几行:
tz_counts = frame['tz'].value_counts() # frame is a Data Frame
tz_counts[:10] # works fine till here. I can see the key-value I wanted
tz_counts[:10].plot(kind='barh', rot=0)
它只是在屏幕上打印一行
<matplotlib.axes.AxesSubplot object at 0x3d14ed0>
而不是像我期望的那样使用 matplotlib 的绘图函数显示绘图窗口。这里出了什么问题?我怎样才能让它发挥作用?
最佳答案
除非您处于“交互”模式,否则 Matplotlib 不会显示绘图,除非您告诉它。
简答:调用 plt.show()
当您准备好显示绘图时。
这将启动您正在使用的任何后端的 gui 主循环,因此它是阻塞的。 (即执行将停止,直到您关闭窗口)
如果你想让它自动显示而不停止执行,你可以打开interactive mode与plt.ion()
或使用 ipython --pylab
.
但是,使用 --pylab
ipython 中的模式会将所有 numpy、matplotlib.pyplot 和其他一些东西导入全局命名空间。这对于交互使用来说很方便,但会教坏习惯并覆盖标准库中的函数(例如 min
、 max
等)。
您仍然可以在 ipython 中使用 matplotlib 的交互模式,而无需使用“pylab”模式来避免全局导入。只需调用 plt.ion()
Matplotlib 的默认 TkAgg
后端将在任何 python shell 的交互模式下工作(不仅仅是 ipython
)。但是,如果 gui mainloop 在单独的线程中运行,则其他后端无法避免阻止进一步执行。如果您使用不同的后端,那么您需要告诉 ipython
这与 --gui=<backend>
选项。
关于python - Pandas 情节有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18881540/