将Pyplot'Hist'保存到文件

时间:2018-01-02 18:31:43

标签: python matplotlib

我正在用pyplot写几个不同的图表到磁盘。其中大多数是for图; scatter特别抵制在其他地方运作的方法。

hist

此方法适用于所有散点图。下面是直方图的模拟,它不起作用。请注意,问题出在ind_list=range(175,185) plt_fail_rate1=plt.scatter(ind_list,perf_fail_rate1) plt.title('Proportion of Failed (size>1 and all unique) Clusters') plt_fail_rate1.figure.savefig(paath+'/fail_rate1.png') plt.clf() 上 - 如果我用savefig替换该行,GUI中会出现一个正常的直方图

plt.show()

如果我使用distr_tmp=tf.opc_size_distr() # get a list from a class plt_opc_size=plt.hist(distr_tmp) plt.title('Number of Codes Per Cluster') #plt.show() #plt_opc_size.savefig(paath+'/size_distr.png') #plt_opc_size.figure.savefig(paath+'/size_distr.png') plt.clf() ,我会获得.figure.savefig()

如果我使用tuple object has no attribute figure,我会获得.savefig()。另外,在回复评论时,我尝试了tuple object has no attribute savefig,但这也无效。

我使用python shell会话来验证特定于hist的问题。也就是说,如果您将.figure().savefig()存储在某个变量中,则可以毫无问题地对该变量调用plt.scatter()。因此,问题可归纳如下:

.figure.savefig()

请注意,如果您是在shell中对此进行测试,则在致电ind_list=[1,2,3] data_list=[10,-5,-15] x=plt.scatter(ind_list,data_list) x.figure.savefig('test.png') # works fine on my laptop hist_list=[1925,1970] x=plt.hist(hist_list) #plt.show() # shows a valid if sparse histogram in a new window x.figure.savefig('test2.png') #all permutations fail 后需要小心(我相信请致电plt.clf()),否则即使正确的通话也会因{{{}}而失败1}}错误。

1 个答案:

答案 0 :(得分:1)

问题在于plt.hist() returns a tuple containing 3 elements

  

n:数组或数组列表

     

直方图箱的值。参见标准或密度和重量   有关可能的语义的描述。如果输入x是一个数组,   那么这是一个长度为nbins的数组。如果输入是序列数组   [data1,data2,..],那么这是一个值为的数组列表   每个数组的直方图顺序相同。

     

bins:array

     

垃圾箱的边缘。长度nbins + 1(nbins左边和右边   最后一个垃圾箱的边缘)。即使是多个数据集,也始终是一个数组   传入。

     

补丁:列表或列表列表

     

用于创建直方图或列表的各个补丁的静默列表   如果有多个输入数据集,则为此列表。

只有最后一个(补丁)是Artist个对象的列表,其中包含对您图形的引用。

为了使您的代码有效,您必须执行以下操作:

plt_opc_size[2][0].figure.savefig(paath+'/size_distr.png')

[2]访问元组的第3个元素(修补程序列表),[0]访问该列表中的第一个Artist

但是,这不是编写代码的最佳方式。您可以使用Figure获取对plt.gcf()的引用。因此,以下内容适用于所有情况:

distr_tmp=tf.opc_size_distr() # get a list from a class
plt_opc_size=plt.hist(distr_tmp)
plt.title('Number of Codes Per Cluster')
plt.gcf().savefig(paath+'/size_distr.png')
plt.clf()