我想查看由浮点列表组成的列表,并为每个子列表创建不同的图,其中列表是y值,每个图中使用相同的x值。然后应将每个图保存到我的计算机中。
我正在使用matplotlib并保存数字 - 但是每个后续数字仍然具有用于在其之前生成数字的子列表的数据! (例如,我的第50个数字上有50行,但我只想要1.)如何解决这个问题?
这是我的代码:
#list contains y values in sublists
x = 91,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20] #my x values, floats, same for each plot
#names[] is defined earlier, is a list of desired figure names
import matplotlib.pyplot as plt
g = 0
for sublist in list:
y = sublist
plt.plot(x,y)
plt.title(names[g])
g = g + 1
plt.savefig(genes[g-1])
提前致谢!
答案 0 :(得分:2)
你的plt.plot
会在第一次运行时创建一个数字和轴。每次之后你都会在图中添加一个新行。
有不同的方法来处理这种情况。例如,您可以每次创建和关闭该图:
for sublist in list:
y = sublist
fig = plt.figure()
plt.plot(x,y)
plt.title(names[g])
g = g + 1
plt.savefig(genes[g-1])
plt.close(fig)
这有点慢,即使只有几十个情节可能不是问题。
或者您只能更改每张图片的Y数据:
# create the first image as a template
l = plt.plot(x, list[0])
for sublist in list:
l.set_ydata(sublist)
plt.title(names[g])
g = g + 1
plt.savefig(genes[g-1])
在这种情况下,您只需更改每一轮的Y数据。
顺便说一下,我在代码中至少改变了以下几点:matplotlib
list
更改为els(list
高度保留)g
(计数器)您可以通过http://codereview.stackexchange.com展示代码获益。你可能会得到很多有价值的建议!