繁体   English   中英

在海洋散点图中绘制椭圆

[英]plot ellipse in a seaborn scatter plot

我有一个pandas格式的数据框(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”对象。 有什么办法吗? 无论如何,我不需要a.set_artist()之类的东西就能绘制椭圆?

Seaborn的lmplot()使用FacetGrid对象进行绘图,因此变量a = lm.lmplot(...)是对该FacetGrid对象的引用。

要添加椭圆,您需要引用Axes对象。 问题是FacetGrid可以包含多个轴,具体取决于您拆分数据的方式。 值得庆幸的是,有一个函数FacetGrid.facet_axis(row_i, col_j)可以返回对特定Axes对象的引用。

在您的情况下,您可以这样做:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM