如何在for循环内生成热图?

时间:2019-06-27 19:58:34

标签: python heatmap

我有以下for循环,该循环遍历CSV文件的文件夹并执行一些计算。这种计算是在file1.csv versus file2.csvfile1.csv versus file3.csv之类的一对一文件计算之间完成的。

我现在能够将计算的输出保存到具有特定文件夹的CSV文件中,但是我还尝试为每个计算生成热图,例如file1.csv vs file2.csv并将图形保存到特定的路径中我想要的。我只能为2个文件计算生成热图,但是当我想在以下for循环中进行操作时,它将所有结果保存为一个图:

这是代码

# read the files
for dirName, subdirList, Myfile in os.walk(path):
    print('Directory: %s' % dirName)
    for files in Myfile:
        print('\t%s' % files)

# apply one to one compuattion between the files
for i in range(len(Myfile)):
    print(Myfile)
    for j in range(i+1, len(Myfile)):

        CSV1 = pd.read_csv(path+'/'+Myfile[i], error_bad_lines=False);
        CSV2 = pd.read_csv(path+'/'+Myfile[j], error_bad_lines=False);

        df1 = pd.DataFrame(data=f1)
        df2 = pd.DataFrame(data=f2)

        result = calculate_stock(df1, df2)  
        # generate the heatmaps for heach one to one computation
        ax = sns.heatmap(result, linewidth=0.5)
        # save the figure
        figure = ax.get_figure() 
        figure.savefig('svm_conf.png', dpi=400)      

        result.to_csv(path+'/'+ Myfile[i]+'_versus_'+ Myfile[j],index=True)

当我尝试如下操作时:

figure.savefig(path+'/'+ Myfile[i]+'_versus_'+Myfile[j], format='png', index=True)

它将文件另存为CSV,而不是png文件,并且CSV内充满随机字母。

如果您能告诉我如何解决此问题,那就太好了。

1 个答案:

答案 0 :(得分:0)

看起来format参数工作不正常。请使用下面的代码。

figure.savefig(path+'/'+ Myfile[i]+'_versus_'+Myfile[j]+'.png')