前提・実現したいこと
seabornで作ったヒートマップをこちらの記事のように並べたいと思います.
元となるcsvデータはこのような「outputi.csv(i=1~10)」というものです.(例)output0.csv
しかしi=0~9の10枚について並べようとしてfor i in range( num_figure):とするとValueError: num must be 1 <= num <= 10, not 0と返されてしまってどうすべきか分かりません.
また元のデータ名を「t=ivxvy.csv(iを0から100おきに10個並べる)」(つまりt=0vxvy.csv,t=100vxvy.csv,t=200vxvy.csv,...みたいな感じです)としても同様のことができるようにしたいです.
次に、10個並べるように実行したときに下の画像のように1つ1つの画像がつぶれてしまいます.
出力のイメージとしてはネットの拾い物ですがこんな感じに全部正方形になってほしいです.
10個のヒートマップの横に「何色がどの程度の数に対応するのか」といったバーもつけたいなと思います。
よろしくお願いします.
該当のソースコード
Python
1import seaborn as sns 2import pandas as pd 3import numpy as np 4import matplotlib.pyplot as plt 5 6 7num_figure =10 8 9fig = plt.figure(figsize=(10.0, 10.0)) 10for i in range(1, num_figure+1): 11 df = pd.read_csv('output{}.csv'.format(i),index_col=0) 12 df = df.iloc[20:60, 20:60] 13 ax = fig.add_subplot(2, 5, i) 14 sns.heatmap(df, cbar=False, cmap='CMRmap_r',xticklabels=3,yticklabels=3) 15 ax.set_title("t={}".format(i)) 16 plt.xlabel("vx") 17 plt.ylabel("vy") 18plt.tight_layout() 19fig.suptitle('particle density') 20plt.savefig('heatmaps.png') 21plt.show() 22
補足情報(FW/ツールのバージョンなど)
Anacondaは本日最新にしました
回答1件
あなたの回答
tips
プレビュー