我有一个有六个小清单的大清单。这六个小列表用作切片值,同时使用matplotlib生成饼图。
f_c = [[4, 1, 0, 1, 0],
[4, 1, 0, 1, 0],
[4, 1, 0, 1, 0],
[4, 0, 2, 0, 0],
[4, 0, 2, 0, 0],
[4, 1, 0, 0, 1]]
我有另一个包含标签的列表
titles = ['Strongly Agree', 'Agree', 'Neutral',
'Disagree', 'Strongly Disagree']
现在,我使用for循环来保存生成的饼图。代码如下:
for i, j in zip(f_c, lst):
pie(i,
labels=titles,
shadow=True)
savefig(j + '.png')
'lst'是一个包含文件名的列表,用于保存饼图。
我可以生成饼图,但图表和标签会被覆盖。只有第一个数字才能正确显示,其余数字将被覆盖。当我手动完成所有数字生成正确,但如果我把它放在一个循环中它没有得到正确保存(它被覆盖)。以下是生成的图像(仅3个):
,,
可能是什么问题?请帮助我。我是matplotlib的新手。
答案 0 :(得分:4)
在尝试生成一个新数字之前清除你正在使用的数字是一个好主意,只是为了清楚你是从一个空白的平板开始。您可以使用plt.clf()
清除,它代表“清晰的数字”。
与您的问题没有直接关系,但在Python中也不是from matplotlib import *
也是一个好主意,因为它可能会覆盖您在本地使用的其他方法。使用有意义的变量名也有帮助。
这样的事情会起作用:
import matplotlib.pyplot as plt
for fig, fig_name in zip(fig_data, fig_names):
plt.clf()
plt.pie(fig, labels=titles, shadow=True)
plt.savefig(fig_name + '.png')