如何为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
相关产品推荐
相关产品推荐

