2017-12-21 47 views
2

seabornライブラリを使用して作成された基本ヒートマップがあり、デフォルトの垂直方向と右側のヒートマップ上の水平方向にカラーバーを移動します。これどうやってするの?Seabornヒートマップ:プロットの上にカラーバーを移動

ここではいくつかのサンプルデータとデフォルトの例です:私たちは、引数cbar_kwsを見つけるthe documentationを見てみると

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

# Create data 
df = pd.DataFrame(np.random.random((5,5)), columns=["a","b","c","d","e"]) 

# Default heatma 
ax = sns.heatmap(df) 
plt.show() 

default heatmap

答えて

2

が。これにより、matplotlibのfig.colorbarメソッドに引き渡される引数を指定することができます。

cbar_kws:キー、値マッピング、オプションのdict。 fig.colorbarのキーワード引数。

だから我々はcbar_kwsに辞書を提供し、fig.colorbarに可能な引数のいずれかを使用することができます。

この場合、カラーバーを上に置くにはlocation="top"が必要です。 colorbarは、デフォルトでは、グリッドスペックを使用してカラーバーを配置するため、位置を設定できないため、そのグリッドスペックをオフにする必要があります(use_gridspec=False)。

sns.heatmap(df, cbar_kws = dict(use_gridspec=False,location="top")) 

コンプリート例:

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

df = pd.DataFrame(np.random.random((5,5)), columns=["a","b","c","d","e"]) 

ax = sns.heatmap(df, cbar_kws = dict(use_gridspec=False,location="top")) 

plt.show() 

enter image description here

+0

これは最も単純な答えは、感謝です! – r3robertson

2

あなたはseaborn図の上部にカラーバーを置くことを軸に分圧器を使用する必要があります。コメントを探してください。

enter image description here

import matplotlib.pyplot as plt 
import seaborn as sns 
import pandas as pd 
import numpy as np 
from mpl_toolkits.axes_grid1.axes_divider import make_axes_locatable 
from mpl_toolkits.axes_grid1.colorbar import colorbar 

# Create data 
df = pd.DataFrame(np.random.random((5,5)), columns=["a","b","c","d","e"]) 

# Use axes divider to put cbar on top 
# plot heatmap without colorbar 
ax = sns.heatmap(df, cbar = False) 
# split axes of heatmap to put colorbar 
ax_divider = make_axes_locatable(ax) 
# define size and padding of axes for colorbar 
cax = ax_divider.append_axes('top', size = '5%', pad = '2%') 
# make colorbar for heatmap. 
# Heatmap returns an axes obj but you need to get a mappable obj (get_children) 
colorbar(ax.get_children()[0], cax = cax, orientation = 'horizontal') 
# locate colorbar ticks 
cax.xaxis.set_ticks_position('top') 

plt.show() 

詳細情報についてはmatplotlibのこの公式の例を読む:それは下の位置にカラーバーを置くため https://matplotlib.org/gallery/axes_grid1/demo_colorbar_with_axes_divider.html?highlight=demo%20colorbar%20axes%20divider

Heatmap引数sns.heatmap(df, cbar_kws = {'orientation':'horizontal'})のような無用です。

+0

ここで最後の文について:[my answer](https://stackoverflow.com/a/47916308/4124317)にあるように、 'cbar_kws = {" location ":" top "、" use_gridspec ":False} )。 – ImportanceOfBeingErnest

2

ヒートマップの四角形のジオメトリを保存するためのプロットのサイズを制御できるサブプロットを使用した例を示したいと思います。この例は非常に短いです:

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

# Create data 
df = pd.DataFrame(np.random.random((5,5)), columns=["a","b","c","d","e"]) 

# Define two rows for subplots 
fig, (cax, ax) = plt.subplots(nrows=2, figsize=(5,5.025), gridspec_kw={"height_ratios":[0.025, 1]}) 

# Draw heatmap 
sns.heatmap(df, ax=ax, cbar=False) 

# colorbar 
fig.colorbar(ax.get_children()[0], cax=cax, orientation="horizontal") 

plt.show() 

enter image description here

関連する問題