seaborn 中的补丁

Patches in seaborn

我的目的是在seaborn的lmplot中的特定坐标处添加一个补丁:

是否可以为 lmplot 添加一个 rectangular/square 补丁?

我能够通过 sns.lmplot() 打印出情节。但是当我尝试使用具有相关坐标的 ax.add_patch() 语句添加矩形补丁时,它出错了。

#Sample code to generate lmplot  and add patch   
ax= sns.lmplot('A', 'B', hue="group", data=res_me,fit_reg=False, \
              palette="Set1",size=10, aspect=1, scatter_kws={"s": 100,"linewidths":2,"edgecolor":"black"})

ax.add_patch(patches.Rectangle((0.912, 0.72), 1.02, .802,fill=False,edgecolor='green',lw=3))

我收到以下错误。

AttributeError: 'FacetGrid' object has no attribute 'add_patch'

那么我们可以给 FacetGrid 添加补丁吗?

lmplot 如您所知,returns 一个 FacetGrid,它将其所有轴作为 2D numpy 存储在 axes 属性 中大批。

因此您只需要执行以下操作:

fg = sns.lmplot('A', 'B', hue="group", data=res_me,fit_reg=False,
              palette="Set1",size=10, aspect=1,
              scatter_kws={"s": 100,"linewidths":2,"edgecolor":"black"})

fg.axes[0, 0].add_patch(patches.Rectangle((0.912, 0.72), 1.02, 
                        0.802,fill=False,edgecolor='green',lw=3))

请注意,如果您的 FacetGrid 中只有一个 Axes 对象,您可以直接使用 fg.ax

访问它