作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个散点图,其中也包含一个椭圆。但是,图例仅包含椭圆的格式。我怎样才能反射(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()
最佳答案
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()
关于python - 使用补丁自定义散点图中的图例标记面颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62778123/
我是一名优秀的程序员,十分优秀!