2017-06-24 16 views
1

したがって、さまざまなデータスケールで海底でヒートマップを作成する必要があります。一部の範囲は0〜100、一部は+ 100〜-100です。私がしなければならないことは、すべてのグラフでカラーグレーディングを同じに保つことです。たとえば、0より下のものは濃い青色から薄い青色に、0を超えるものは暗い赤色になるように、下のひどい例のグラフのようにします。Seaborn HeatMap - 複数の異なるデータセットにカラーグレーディングを設定する方法

以下のコード - 私はそれが非常によく下に表示されていない必要なもの

enter image description here

は、現在、私は、私だけの色数をリストしたようseabornはそれを働いているか完全にはわからない流体色の変化であります

sns.heatmap(df.T, cmap=ListedColormap(['#000066','#000099','#0000cc','#1a1aff','#6666ff','#b3b3ff','#ffff00','#ffcccc','#ff9999','#ff6666','#ff3333','#ff0000']), annot=False) 

ありがとうございました。色の正規化を指定するには

答えて

4

、あなたは、Normalizeインスタンスを使用plt.Normalize(vmin, vmax)し、(基礎となるpcolormeshにルーティングされる)normキーワードを使用してヒートマップにそれを供給することができます。

色が徐々に変化するカラーマップを取得するには、静的LinearSegmentedColormap.from_listメソッドを使用し、色のリストを指定します。

import numpy as np; np.random.seed(0) 
import seaborn as sns 
import matplotlib.pyplot as plt 
import matplotlib.colors as mcolors 

x1 = np.random.randint(0,100,size=(12,8)) 
x2 = np.random.randint(-100,100,size=(12,8)) 

fig, axes = plt.subplots(ncols=2) 

cmap = mcolors.LinearSegmentedColormap.from_list("n",['#000066','#000099','#0000cc','#1a1aff','#6666ff','#b3b3ff', 
         '#ffff00','#ffcccc','#ff9999','#ff6666','#ff3333','#ff0000']) 
norm = plt.Normalize(-100,100) 

sns.heatmap(x1, ax=axes[0], cmap=cmap, norm=norm) 
sns.heatmap(x2, ax=axes[1], cmap=cmap, norm=norm) 

plt.show() 

enter image description here

+0

まっすぐ進む素晴らしいと!データを変更するだけで、文字通りコードを貼り付けることができます。ありがとう! – NJD

関連する問題