Matplotlib绘制单侧定向2D箭头的问题求助
解决Matplotlib贝塞尔控制线段箭头问题
针对你遇到的三个问题,直接用Line2D加marker的方式无法满足需求,推荐使用matplotlib.patches.FancyArrowPatch来绘制带箭头的控制线段,它能精准控制箭头的位置、方向和样式。
修正后的代码示例:
from matplotlib.patches import FancyArrowPatch # 绘制第一条控制线段(箭头指向p1,仅在末端显示) arrow1 = FancyArrowPatch( (p0[0], p0[1]), (p1[0], p1[1]), arrowstyle='->', linewidth=0.2, mutation_scale=8, color='black' ) ax.add_patch(arrow1) # 绘制第二条控制线段(箭头指向p3,方向向下,仅在末端显示) arrow2 = FancyArrowPatch( (p2[0], p2[1]), (p3[0], p3[1]), arrowstyle='->', linewidth=0.2, mutation_scale=8, color='black' ) ax.add_patch(arrow2)
问题解决说明:
- 箭头仅在前端显示:
FancyArrowPatch默认只在线段的终点(第二个坐标参数)绘制箭头,自然解决两端都有标记的问题。 - 箭头方向错误:箭头方向由起点到终点的坐标顺序决定,确保
(p2, p3)的坐标顺序正确,箭头就会指向预期方向;若需反向箭头,交换起点和终点坐标即可。 - 箭头与线段不垂直且未居中:
arrowstyle='->'是内置标准箭头样式,会自动与线段垂直并居中对齐;通过mutation_scale可调整箭头大小,匹配线段粗细。
如果需要更精细的箭头样式控制,可修改arrowstyle参数,例如arrowstyle='-|>,head_width=0.3,head_length=0.5'来调整箭头的角度、长度等细节。
内容的提问来源于stack exchange,提问作者Ben
相关产品推荐
相关产品推荐

