增加 FacetGrid 绘图中行之间的间距。

21
我有以下代码,可以创建出你在图片中看到的图表:
g = sns.FacetGrid(data, col="Provincia",col_wrap=6,size=2.5)
g.map(sns.barplot, "Anio", "Diff");
g.set_axis_labels("Año", "Porcentaje de aumento");

for ax in g.axes.flat:
    _ = plt.setp(ax.get_yticklabels(), visible=True)
    _ = plt.setp(ax.get_xticklabels(), visible=False)
    _ = plt.setp(ax.get_xticklabels()[0], visible=True)    
    _ = plt.setp(ax.get_xticklabels()[-1], visible=True)

问题如图所示,x轴刻度与下方列名重叠。有什么正确的方法可以增加这个空间以解决这个问题吗?

output


根据seaborn.FacetGrid的说明,最好直接使用图形级别函数,例如g = sns.catplot(data=data, kind='bar', ...),而不是sns.FacetGrid。这些答案仍然适用。 - Trenton McKinney
1个回答

42

紧凑布局

你可以使用tight_layout自动调整间距。

g.fig.tight_layout()

或者,如果您已经将matplotlib.pyplot导入为plt

plt.tight_layout()

子图调整

您可以使用plt.subplots_adjust手动设置子图之间的间距,

plt.subplots_adjust(hspace=0.4, wspace=0.4)

其中hspace表示高度方向上的空间,而wspace则表示宽度方向上的空间。

gridspec关键字参数

您也可以在FacetGrid初始化中使用gridspec_kws关键字参数。

g = sns.FacetGrid(data, ... , gridspec_kws={"wspace":0.4})

但是,只有在未设置col_wrap时才可以使用此选项。(因此,在问题的特定情况下可能不是一个选项)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接