当尝试在python3下使用matplotlib绘制图形时,对pyplot.show()的调用无法执行任何操作。
(script bonker.py)
import matplotlib
import numpy as np
print('Matplotlib version '+matplotlib.__version__) ;
print('Matplotlib is using '+matplotlib.backends.backend) ;
print('Numpy version '+np.__version__) ;
from matplotlib import pyplot as plt
infile=open('/usr/share/dict/words') ;
vals=list() ;
for line in infile :
vals += [ len(line.strip()) ] ;
print('Values collected. ('+repr(len(vals))+' items.)') ;
(hist,bin_edges)=np.histogram(vals,bins=20) ;
myf=plt.figure() ;
mya=myf.add_subplot(111) ;
mya.bar(bin_edges[1:],hist) ;
plt.ion() ;
print('plt.interactive is '+repr(plt.isinteractive())) ;
plt.show() ;
(在ipython中执行)
I1> %run bonker.py
Matplotlib version 1.5.0
Matplotlib is using GTK3Agg
Numpy version 1.10.1
Values collected. (479828 items.)
plt.interactive is True
I2>
然后,没有任何反应。 plt.show()
在重复呼叫后无效。
但是,如果我尝试明确地显示图形(plt.show(myf)
),那么图形会正确显示,但是shell不再响应并且即使在图形关闭后仍然没有响应。有谁知道我能做些什么(希望没有重建python3和matplotlib)来修复这些行为?