海边的补丁

时间:2016-10-26 20:52:19

标签: python plot seaborn

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

Intended seaborn plot with patch

有没有向lmplot添加矩形/方形补丁?

我能够通过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添加补丁吗?

1 个答案:

答案 0 :(得分:1)

lmplot正如您所了解的那样,返回FacetGrid,它将所有轴存储在axes属性中作为2D numpy数组。

所以你只需要做一些事情:

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

直接访问该对象