首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >matlibplot生成混淆图

matlibplot生成混淆图
EN

Stack Overflow用户
提问于 2013-06-12 18:17:40
回答 1查看 138关注 0票数 0

我将以下代码放在不同的GtkNotebook选项卡和不同的类中:

1号图:

代码语言:javascript
复制
        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号图:

代码语言:javascript
复制
        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()查看会发生什么,结果生成了两个图。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-06-15 03:31:55

混合后端提供的matplotlib类和来自pylab或pyplot的命令通常不是一个好主意。我有很多问题(内存泄露等)这样,直到我清除了所有的pylab调用,只使用了类方法。

因此,添加您需要的导入,如

代码语言:javascript
复制
from matplotlib.figure import Figure
from matplotlib.backends.backend_gtkagg import\
    FigureCanvasGTKAgg as FigureCanvas
from matplotlib.backends.backend_gtkagg import\
    NavigationToolbar2GTKAgg as NavigationToolbar

等等,使用任何你想使用的gtk后端。

然后,

代码语言:javascript
复制
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导入,并查看错误弹出的位置。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17062989

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档