Adi*_*tya 7 python plot matplotlib pandas
我正在关注Wes McKinney的一本书,在介绍大熊猫的部分中,他给出了一个绘制大熊猫数据框的简单例子.这是我写的行:
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)
Run Code Online (Sandbox Code Playgroud)
它只是在屏幕上打印一条线说
<matplotlib.axes.AxesSubplot object at 0x3d14ed0>
Run Code Online (Sandbox Code Playgroud)
而不是像matplotlib的绘图功能那样显示一个绘图窗口.这有什么不对?我怎样才能使它工作?
Joe*_*ton 14
除非您处于"交互式"模式,否则Matplotlib在您告知之前不会显示该情节.
简答:plt.show()当你准备好显示情节时打电话.
这启动了你正在使用的任何后端的gui主循环,所以它是阻塞的.(即执行将停止,直到你关闭窗口)
如果您希望它在不停止执行的情况下自动显示,您可以使用或使用启用交互模式.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>选项告诉它.