Python 在seaborn散点图中绘制椭圆

Python 在seaborn散点图中绘制椭圆,python,pandas,matplotlib,plot,seaborn,Python,Pandas,Matplotlib,Plot,Seaborn,我有一个熊猫格式的数据框(pd.DataFrame),列=[z1,z2,Digit],我在seaborn中做了一个散点图: dataframe = dataFrame.apply(pd.to_numeric, errors='coerce') sns.lmplot("z1", "z2", data=dataframe, hue='Digit', fit_reg=False, size=10) plt.show() 我要画的是围绕这些点的椭圆。但我似乎无法在同一个图形中绘制椭圆 我知道绘制椭圆

我有一个熊猫格式的数据框(pd.DataFrame),列=[z1,z2,Digit],我在seaborn中做了一个散点图:

dataframe = dataFrame.apply(pd.to_numeric, errors='coerce')
sns.lmplot("z1", "z2", data=dataframe, hue='Digit', fit_reg=False, size=10)
plt.show()
我要画的是围绕这些点的椭圆。但我似乎无法在同一个图形中绘制椭圆

我知道绘制椭圆的一般方法如下:

import matplotlib.pyplot as plt
from matplotlib.patches import Ellipse

elps = Ellipse((0, 0), 4, 2,edgecolor='b',facecolor='none')
a = plt.subplot(111, aspect='equal')
a.add_artist(elps)
plt.xlim(-4, 4)
plt.ylim(-4, 4)
plt.show()
但由于我必须执行“a=plt.subplot(111,aspect='equal')”,因此绘图将位于不同的图形上。我也不能执行以下操作:

a = sns.lmplot("z1", "z2", data=rect, hue='Digit', fit_reg=False, size=10)
a.add_artist(elps)
因为sns.lmplot()返回的“a”是“seaborn.axisgrid.FacetGrid”对象的。有什么解决办法吗?无论如何,我可以不必像.set_artist()那样绘制椭圆吗?

使用
FaceGrid
对象进行绘制,因此您的变量
a=lm.lmplot(…)
是对该
FaceGrid
对象的引用

要添加省略号,需要对
对象的参照。问题在于,FacetGrid可能包含多个轴,具体取决于分割数据的方式。谢天谢地,有一个函数可以返回对特定
轴的引用

在您的情况下,您将执行以下操作:

a = sns.lmplot("z1", "z2", data=rect, hue='Digit', fit_reg=False, size=10)
ax = a.facet_axis(0,0)
ax.add_artist(elps)