Python 使用面片自定义散点图中的图例标记facecolor

Python 使用面片自定义散点图中的图例标记facecolor,python,matplotlib,seaborn,legend,Python,Matplotlib,Seaborn,Legend,我有一个散点图,它也包含一个椭圆。但是,图例仅包含椭圆的格式。如何从散点图中反映格式 在下面的示例中,我希望像散点图一样填充图例标记 x = np.random.randn(60) y = np.random.randn(60) fig,ax=plt.subplots() sb.scatterplot(x, y,color='red', ax=ax) ellipse = matplotlib.patches.Ellipse( xy=(0, 0), width

我有一个散点图,它也包含一个椭圆。但是,图例仅包含椭圆的格式。如何从散点图中反映格式

在下面的示例中,我希望像散点图一样填充图例标记

x = np.random.randn(60) 
y = np.random.randn(60)

fig,ax=plt.subplots()
sb.scatterplot(x, y,color='red', ax=ax)
ellipse = matplotlib.patches.Ellipse( 
                xy=(0, 0), width=2, height=3, angle=45, 
                edgecolor='red', facecolor='none'
            )
ax.add_patch(ellipse)

ax.legend(['A'])
plt.show()

Matplotlib的标准方法是为图例中显示的每个项目指定一个标签。只有在标准方法无法给出所需结果的情况下,图例才能显示

不带参数调用ax.legend(),将创建默认图例。可以使用
Patch'和
Line2D`创建自定义句柄,如下代码所示

导入matplotlib.pyplot作为plt
从matplotlib.patches导入椭圆
从matplotlib.patches导入修补程序
从matplotlib.lines导入Line2D
将numpy作为np导入
导入seaborn作为sns
x=np.random.randn(60)
y=np.random.randn(60)
图,ax=plt.子批次()
sns.scatterplot(x,y,color='red',ax=ax,label='scatterdots')
椭圆=椭圆(xy=(0,0),宽度=2,高度=3,角度=45,
edgecolor='red',facecolor='none',label='ellipse')
ax.添加补片(椭圆)
句柄,标签=ax.get\u legend\u handles\u labels()
新把手=[Patch(facecolor='白色',edgecolor='红色',hatch='ooo'),
Line2D([0],[0],marker='o',markerfacecolor='红色',MarkerEdge='黑色',markersize=10,ls='')]
ax.图例(新手柄、标签)
plt.show()

由于某些原因,它无法处理我的真实数据,但工作示例非常有效。话虽如此,是否有办法在绘图功能之外独立更改图例中标记的格式(
facecolor
edgecolor