在Seaborn中使用FacetGrid缩放构面以适合数据并使用最大可用空间

时间:2018-09-10 10:05:28

标签: python plot seaborn scaling facet-grid

我正在与here所示的FacetGrid示例一起工作,其中FacetGrid对象是使用下面的代码片段初始化的,导致出现下面的图。

# Initialize the FacetGrid object
g = sns.FacetGrid(df, row="g", hue="g", height=2, aspect=10, palette=sns.color_palette("Blues", 1))

# Draw the densities in a few steps
g.map(sns.kdeplot, "x", clip_on=False, shade=True, alpha=1, lw=1.5, bw=.2)
g.map(sns.kdeplot, "x", clip_on=False, color="w", lw=2, bw=.2)
g.map(plt.axhline, y=0, lw=2, clip_on=False)

enter image description here

我已在所有构面中添加了值标签,并且我想对其进行进一步修改以缩放每个构面,因为在很多情况下,值超出构面的最大空间,在某些情况下由于值不够密集,因此无法看到数据。第一组案例如下所示,您可以看到标签如何延伸到下一个方面,从而降低了图的清晰度。

enter image description here

我想要实现的是对每个构面进行单独缩放,并标记值,并将最大值放置在可用构面空间的顶部。

1 个答案:

答案 0 :(得分:0)

我解决了它,注释掉下面的行后,构面不再重叠:

# Set the subplots to overlap
g.fig.subplots_adjust(hspace=-.25)

此外,按照注释中的建议,我将值设置为正数以使构面彼此靠近,但不引入相邻构面的标签之间的重叠。我发现0.2的值很好地满足了需求:

g.fig.subplots_adjust(hspace=.2)

然后sharey=False构造函数中的FacetGrid自变量起作用。看起来更干净,但是这些值并不能完全填满整个可用空间,但这也许是有意的。

g = sns.FacetGrid(df, row="g", hue="g", height=2, aspect=10, sharey=False, palette=sns.color_palette("Blues", 1))

enter image description here