You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Matplotlib绘制的半圆曲线添加垂直于切线的箭头?

实现方法

对于圆上的点来说,切线的垂线就是半径所在的方向,所以我们可以利用这个几何特性快速绘制箭头,步骤如下:

  • 计算每个点相对于圆心的方向向量(即半径方向),这就是垂直于切线的方向
  • 对方向向量做归一化,保证所有箭头长度一致
  • 使用Matplotlib的quiver()函数绘制箭头

修改后的完整代码如下:

import numpy as np
import matplotlib.pyplot as plt

r = 2
h = 0
k = 0

x0 = h - r
x1 = h + r

x = np.linspace(x0, x1, 9)
y = k + np.sqrt(r**2 - (x - h)**2)

# 计算法线方向向量(从圆心指向点),并归一化
dx = x - h
dy = y - k
# 归一化处理,确保箭头长度统一
norm = np.sqrt(dx**2 + dy**2)
dx_normalized = dx / norm
dy_normalized = dy / norm

plt.scatter(x, y)
# 绘制垂直于切线的箭头,scale控制箭头长度,width控制箭头宽度
plt.quiver(x, y, dx_normalized, dy_normalized, scale=15, width=0.005, color='red')
plt.xlim(-4, 4)
plt.ylim(-4, 4)
# 设置坐标轴等比例,避免箭头方向因坐标轴拉伸失真
plt.gca().set_aspect('equal', adjustable='box')
plt.show()

额外调整说明

  • 若需要箭头指向圆心(内侧),只需将方向向量取反,即使用-dx_normalized和-dy_normalized
  • scale参数可按需调整,数值越大箭头显示越短;width控制箭头的粗细
  • 必须设置坐标轴等比例,否则箭头的垂直关系会因坐标轴缩放出现视觉偏差

内容的提问来源于stack exchange,提问作者Jack

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 18:26:03