2017-08-11 4 views
0

私はseabornのヒートマップを使用してデータフレームを視覚化しようとしていました。 データの最小数は、以下に示すように-1.25です。ただし、ヒートマップエンコーディングは-80(青色)の範囲でした。色のエンコーディングを青で-1.25、赤で97にするにはどうしたらいいですか?Seabornのカラーマップは、数値がデータに存在しないことを示しています。

私はvmax、vmin、および堅牢なキーワードを使用しようとしましたが、役に立たないです。

f, ax = plt.subplots(figsize=(8, 20)) 
       sns.heatmap(hill, annot=annot, linewidths=1, ax=ax, fmt='g', vmin=hill.values.min(), vmax=hill.values.max(), robust=True) 
       plt.yticks(rotation=0) 



hill.values.min() 
Out[30]: -1.25 
hill.values.max() 
Out[31]: 96.899999999999991 

enter image description here

+0

ヒートマップでは 'hill.values.min()'を使用しますが、後の計算では 'hill.min()。min()'を使用します。どうして? – asongtoruin

+0

@ason​​gtoruin指摘に感謝します。私はmin maxを得るためにさまざまな方法を試していました。プロットは同じです。一貫性のあるように投稿を更新しました。 – Lisa

+0

'vmin'と' vmax'を設定しているときに 'robust = True'を持つ理由がありますか?たぶんこの無しで試してみよう – asongtoruin

答えて

0

まず、必要な機能はseabornバージョン0.8以降ではデフォルトです。このバージョンでは、コード

import matplotlib.pyplot as plt 
import numpy as np 
import seaborn as sns 

arr1 = np.linspace(-1.25,97,100).reshape(10,10) 

sns.heatmap(arr1, cmap="coolwarm") 

plt.show() 

は簡単にオプションがあなたのseabornを更新するので、ある

enter image description here

を生成します。バージョン0.8以下seabornで


あなたはcenter引数を使用してカラーマップの中心を指定することで、同じ動作を得ることができます。

import matplotlib.pyplot as plt 
import numpy as np 
import seaborn as sns 

arr1 = np.linspace(-1.25,97,100).reshape(10,10) 

center = np.mean([arr1.min(), arr1.max()]) 
sns.heatmap(arr1, cmap="coolwarm", center=center, vmin=arr1.min(), vmax=arr1.max()) 

plt.show() 
関連する問題