Маркеры легенды для кругов различаются по размеру, поскольку первый круг не имеет краевого цвета, а два других имеют цвет края, установленный с помощью color
.Вместо этого вы можете установить цвет лица круга.Кроме того, вы можете установить ширину линии всех трех кругов равной.
Маркер легенды для линии настолько велик, потому что он просто копирует атрибут из линии на графике.Если вы хотите использовать другую ширину линии, вы можете обновить ее с помощью соответствующего обработчика легенды.
import matplotlib.pyplot as plt
from matplotlib.legend_handler import HandlerLine2D
def update_prop(handle, orig):
handle.update_from(orig)
handle.set_linewidth(2)
fig, ax = plt.subplots(figsize=(6.4, 6), dpi=200, frameon=False)
# 3 Circles, set the facecolor instead of edge- and face-color
ax.add_patch(plt.Circle((0,0), radius=1, alpha=0.9, zorder=0, label="Circle"))
ax.add_patch(plt.Circle((-1,0), radius=0.05, facecolor="y", label="Point on Circle"))
ax.add_patch(plt.Circle((1, 0), radius=0.05, facecolor="k", label="Opposite Point on Circle"))
# Line, update the linewidth via
ax.axvline(0, ymin=0.5-0.313, ymax=0.5+0.313, linewidth=12, zorder=1, c="g", label="Vertical Line")
ax.legend(loc=2, handler_map={plt.Line2D:HandlerLine2D(update_func=update_prop)})
ax.set_xlim(-2,1.2)
ax.set_ylim(-1.5, 1.5)
plt.show()