我将以下代码放在不同的GtkNotebook选项卡和不同的类中:
1号图:
self.vsm_fig = plt.figure(1)
subplots_adjust(bottom=0.20)
self.vsm_canvas = FigureCanvas(self.vsm_fig)
self.vsm_chart_vbox.pack_start(self.vsm_canvas)
self.vsm_toolbar = NavigationToolbar(self.vsm_canvas, self.vsm_chart_vbox)
self.vsm_chart_vbox.pack_start(self.vsm_toolbar,False,False, 3)
if len(results_vsm) >= 1:
for key,value in results_vsm.items():
plt.plot([0,1],[0,value], label=key)
plt.axis([0, 1, 0, 1])
plt.legend()
plt.show()
self.vsm_canvas.draw() 第2号图:
self.tf_idf_fig = plt.figure(2)
subplots_adjust(bottom=0.20)
self.tf_idf_canvas = FigureCanvas(self.tf_idf_fig)
self.tf_idf_chart_vbox.pack_start(self.tf_idf_canvas)
self.tf_idf_toolbar = NavigationToolbar(self.tf_idf_canvas, self.tf_idf_chart_vbox)
self.tf_idf_chart_vbox.pack_start(self.tf_idf_toolbar,False,False, 3)
if len(results_tfidf) >= 1:
plt.bar(*zip(*zip(count(), results_tfidf.values())))
plt.title("TF IDF Chart")
plt.xticks(*zip(*zip(count(), results_tfidf.keys())),rotation='vertical')
plt.xlabel("Word")
plt.ylabel("TF*IDF")
self.tf_idf_canvas.draw() 为什么当我执行第二个选项卡的self.tf_idf_canvas.draw()时,没有生成绘图。我尝试使用plt.show()查看会发生什么,结果生成了两个图。
发布于 2013-06-15 03:31:55
混合后端提供的matplotlib类和来自pylab或pyplot的命令通常不是一个好主意。我有很多问题(内存泄露等)这样,直到我清除了所有的pylab调用,只使用了类方法。
因此,添加您需要的导入,如
from matplotlib.figure import Figure
from matplotlib.backends.backend_gtkagg import\
FigureCanvasGTKAgg as FigureCanvas
from matplotlib.backends.backend_gtkagg import\
NavigationToolbar2GTKAgg as NavigationToolbar等等,使用任何你想使用的gtk后端。
然后,
self.vsm_fig = Figure()
self.vsm_fig.subplots_adjust(bottom=0.20)
...
plot = self.vsm_fig.add_subplot()
plot.bar(*zip(*zip(count(), results_tfidf.values())))
plot.set_title("TF IDF Chart")
plot.set_xticks(*zip(*zip(count(), results_tfidf.keys())),rotation='vertical')
plot.set_xlabel("Word")
plot.set_ylabel("TF*IDF")
self.vsm_canvas.show_now()第二个情节也是如此。确保您没有忘记的最简单的方法是删除pylab或pyplot导入,并查看错误弹出的位置。
https://stackoverflow.com/questions/17062989
复制相似问题