Python matplotlib 画圈手绘风格

Drawing circle hand drawn style by matplotlib in Python

我是 matprotlib 的新手。绘制图表后,我想标记一个点。我使用以下代码执行此操作:

import matplotlib.pyplot as plt

fig, ax = plt.subplots()
ax.scatter(3, 2, s=500, edgecolor='#ff575a', lw=2, facecolor='none', alpha=0.5, zorder=1) #6.5-row['mag']
ax.plot([1, 2, 3, 4], [1, 4, 2, 3])

输出:

是否可以制作自定义形状的手写样式而不是对称的红色圆圈?像这样的:

我尝试使用 ax.scatter 的 AnnotationBbox 代替:

ab = AnnotationBbox(OffsetImage(plt.imread('circle.png'), 
    zoom=0.2), (3, 2), frameon=False)

但这会使图片变差,缺少圆圈的某些像素,因此不如原始 png 清晰:

以下示例代码使用 xkcd 样式绘制波浪形弧线。您可能需要试验最适合您的绘图的参数。

import matplotlib.pyplot as plt
from matplotlib.patches import Arc

fig, ax = plt.subplots()
ax.scatter(3, 2, s=500, edgecolor='#ff575a', lw=2, facecolor='none', alpha=0.5, zorder=1)  #
ax.plot([1, 2, 3, 4], [1, 4, 2, 3])
with plt.xkcd(scale=10):
    ax.add_patch(Arc((3, 2), 0.3, 0.3, angle=275, theta1=0, theta2=350,
                     edgecolor='#ff575a', lw=2, facecolor='none', alpha=0.5, zorder=1))
plt.show()