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()
我是 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()