gpt4 book ai didi

python - 使用补丁自定义散点图中的图例标记面颜色

转载 作者:行者123 更新时间:2023-12-04 09:32:24 25 4
gpt4 key购买 nike

我有一个散点图,其中也包含一个椭圆。但是,图例仅包含椭圆的格式。我怎样才能反射(reflect)散点图的格式?
在下面的示例中,我希望像散点图中那样填充图例标记。

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()
enter image description here

最佳答案

Matplotlib 的标准方法是为每个要出现在图例中的项目分配一个标签。只有在标准方式无法给出预期结果的情况下,图例才可以是 customized .
调用 ax.legend()不带参数创建默认图例。可以使用 Patch' and 创建自定义 handle Line2D` 如下面的代码所示。

import matplotlib.pyplot as plt
from matplotlib.patches import Ellipse
from matplotlib.patches import Patch
from matplotlib.lines import Line2D
import numpy as np
import seaborn as sns

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

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

handles, labels = ax.get_legend_handles_labels()
new_handles = [Patch(facecolor='white', edgecolor='red', hatch='ooo'),
Line2D([0], [0], marker='o', markerfacecolor='red', markeredgecolor='black', markersize=10, ls='')]
ax.legend(new_handles, labels)
plt.show()
example plot

关于python - 使用补丁自定义散点图中的图例标记面颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62778123/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com