2017-06-22 8 views
0

同じコードを使用してmatplotlibを使用して複数のヒートマップを作成しようとしています。もちろん、これらのヒートマップではデータが異なります。このため、ヒートマップの色の濃さが異なります。強度の範囲が同じままであることを確認できる方法はありますか?ヒートマップのすべての値は0と1の間にあるので、値0.2heatmap1の色は、0.2の色と同じに見えるようにしてください。両方のヒートマップの範囲が異なる場合でもheatmap2になります。同じ勾配で複数のヒートマップを生成する

質問の多少混乱していることをお詫びしますが、私はそれをよりうまく説明する方法はわかりません。ここで

は私がヒートマップを生成するために使用しているコードです:

from matplotlib import pyplot as plt 

def show_values(pc, fmt="%.2f", **kw): 
    ''' 
    Heatmap with text in each cell with matplotlib's pyplot 
    Source: http://stackoverflow.com/a/25074150/395857 
    By HYRY 
    ''' 
#  from itertools import izip 
    try: 
     # Python 2 
     from itertools import izip 
    except ImportError: 
     # Python 3 
     izip = zip 
    pc.update_scalarmappable() 
    ax = pc.get_axes() 
    for p, color, value in izip(pc.get_paths(), pc.get_facecolors(), pc.get_array()): 
     x, y = p.vertices[:-2, :].mean(0) 
     if np.all(color[:3] > 0.5): 
      color = (0.0, 0.0, 0.0) 
     else: 
      color = (1.0, 1.0, 1.0) 
     ax.text(x, y, fmt % value, ha="center", va="center", color=color, **kw) 


df= pd.read_csv("filepath", header=None) 
fig, ax = plt.subplots(figsize=(20, 10)) 
heatmap = plt.pcolor(df,cmap=matplotlib.cm.Blues) 
ax.set_yticks(np.arange(df.shape[0]) + 0.5, minor=False) 
ax.set_xticks(np.arange(df.shape[1]) + 0.5, minor=False) 
ax.set_xticklabels(xlabels, minor=False, rotation=45) 
ax.set_yticklabels(ylabels, minor=False) 
plt.ylim((0, df.shape[0])) 
plt.gca().invert_yaxis() 
plt.title("plot title") 
show_values(heatmap) 
plt.show() 

任意の助けもいただければ幸いです。

答えて

1

はあなたの最小値と最大値を決定し、そんなに、私は魅力のように働いた

+0

this exampleからこれを引っ張っコード

plt.pcolor(x, y, z, cmap='RdBu', vmin=z_min, vmax=z_max) 

に感謝し、それらを指定します。 – Patthebug

関連する問題