我尝试使用相同的y轴并排生成热图和条形图。
我使用matplotlib的子图进行了很长时间,但遗憾的是这两个图表未对齐。无论我先画的是哪一个都比第一个低一点。
%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])
如果我颠倒了两个seaborn电话的顺序,情节将如下:
我已尝试过所有内容,包括fig.subplots_adjust
,但我无法正确排列这些行。
有什么建议吗?
答案 0 :(得分:1)
sharey
帮我找到解决方案。现在,我可以使用以下代码生成正确对齐的并排图,这些图仍然有效地共享相同的y轴:
%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])