2016-05-18 18 views
0

同じY軸を使用してヒートマップとバープロットを並べて作成しようとしています。Seabornのサブプロットが不揃い

私はmatplotlibのサブプロットを使用してかなり遠くに来ましたが、残念なことに2つのグラフの位置がずれています。どちらが最初に描かれても、最初のものよりも少し低いように見えます。

%pylab inline 

import pandas as pd 
import seaborn 

d = pd.DataFrame({'names': ['foo', 'bar', 'baz', 'spam', 'eggs'], 
        'v1': pd.np.random.power(.1, 5), 
        'v2': pd.np.random.normal(size=5)}) 

fig, axes = plt.subplots(nrows=1, ncols=2, sharey=True, squeeze=True) 

fig.tight_layout(pad=0, h_pad=0, w_pad=0) 

bar = seaborn.barplot(y='names', x='v1', data=d, ax=axes[1]) 
bar.set(ylabel='') 
heat = seaborn.heatmap(d.set_index('names'), cbar=False, linewidths=0.1, ax=axes[0]) 

misaligned subplots

私は2つのseaborn呼び出しの順序を逆転したい場合は、プロットは次のようになります。

more misaligned subplots

私は含めて、すべてについてちょうど試してみましたfig.subplots_adjust、行を正しく整列させることができません。

提案がありますか?

+1

'sharey'が動作しませんが、あなたはそれらを並べることができます。今、私はまだ効果的に以下のコードを使用して、同じy軸を共有し、適切に整列サイド・バイ・サイドのプロットを生成することができます異なるy軸の制限を使用すると – mwaskom

答えて

1

mwaskomさんの提案は、shareyをドロップすると解決策を見つけるのに役立ちました。

%pylab inline 

import pandas as pd 
import seaborn 

d = pd.DataFrame({'names': ['foo', 'bar', 'baz', 'spam', 'eggs'], 
        'v1': list(range(5)), 
        'v2': pd.np.random.normal(size=5)}) 

fig, axes = plt.subplots(nrows=1, ncols=2, squeeze=True) 
fig.tight_layout(pad=0, h_pad=0, w_pad=0) 
fig.subplots_adjust(wspace=0.1) 

bar = seaborn.barplot(y='names', x='v1', data=d, ax=axes[1]) 
bar.set(ylabel='', yticks=[]) 
heat = seaborn.heatmap(d.set_index('names'), cbar=False, linewidths=0.1, ax=axes[0]) 

enter image description here

関連する問題