2017-08-03 135 views
2

我有一个我正在绘制的值列表,每次我循环访问列表时,我都会创建一个绘图。但是,每次通过循环时,图都会覆盖。这是我尝试远远没有工作。避免覆盖列表的值 - Python(Pandas)

myPath = "//my/absolute/path" 

for i in list_val: 
    i.plot('var1', 'var2') 
    plt.savefig(os.path.join(myPath,''.join("figure{y}.png".format(y = i)))) 
    plt.show() 

然而,当我尝试以下,它覆盖的图像(我知道这会发生),

myPath = "//my/absolute/path" 

for i in list_val: 
    i.plot('var1', 'var2') 
    plt.savefig(os.path.join(myPath,''.join("figure.png"))) 
    plt.show() 

如何修改我上面的第一个片段,以避免覆盖图像?

+0

list_val是dataframes的名单?在第一个片段中,保存的png的名称是什么? – saintsfan342000

+0

@ saintsfan342000是的,它是一个数据框的列表,我命名我的结果图像为“figure”为例。我正在寻找添加像'figure1'' figure2'等。 –

回答

2

如何

myPath = "//my/absolute/path" 

for index,df in enumerate(list_val): 
    df.plot('var1', 'var2') 
    plt.savefig(os.path.join(myPath,''.join("figure{y}.png".format(y = index)))) 
    plt.show() 
+0

所以它不会抛出一个错误? – DJK

+0

我有'j'和'i'开关,这是我粗心的错误,现在它工作得很好:) –

+0

是的,可能是一个坏主意,不要把它们按字母顺序放在我的部分我更新 – DJK

2

尝试

myPath = "//my/absolute/path" 

for i in range(1, len(list_val)): 
    list_val[i].plot('var1', 'var2') 
    plt.savefig(os.path.join(myPath,''.join("figure{y}.png".format(y = i+1)))) 
    plt.show() 
+0

这种方法会抛出一个错误'TypeError:'list'对象不能被解释为一个整数',我认为像这样使用'range'将不起作用,可能它应该是'for i in range(1,len(list_val)):',将实际给予'范围'。 –

+0

你说得对,应该有一个len()参数。 – Cuber