如何在Python中绘制径向变化、角度恒定的特殊图形
实现径向变化的嵌套圆环绘图
首先修正你代码里的语法问题:NumPy中数组间的乘法直接用*即可,.*是MATLAB的写法,Python里不支持。
接下来,要绘制类似嵌套圆环的效果,我们可以利用Matplotlib的极坐标绘图功能,将func作为每个圆环的颜色(或粗细)属性,每个圆环对应一个径向值rho,角度覆盖0到2π。具体实现如下:
import numpy as np import matplotlib.pyplot as plt # 定义参数 a = 0.819 * 10**-3 b = 2.73 * 10**-3 Vo = 11.27 # 生成径向变量rho(减少采样数量避免圆环过于密集) rho = np.linspace(0.0645, 0.215, 20) # 计算func值 func = (Vo / np.log(b/a)) * (1 / rho) # 创建极坐标画布 fig, ax = plt.subplots(subplot_kw={'projection': 'polar'}) # 遍历每个rho和对应的func值,绘制嵌套圆环 for r, val in zip(rho, func): theta = np.linspace(0, 2*np.pi, 1000) # 固定径向值r,角度遍历0到2π,颜色由func值映射 ax.plot(theta, np.full_like(theta, r), color=plt.cm.viridis(val / func.max()), linewidth=2) # 添加颜色条对应func值 sm = plt.cm.ScalarMappable(cmap='viridis', norm=plt.Normalize(vmin=func.min(), vmax=func.max())) sm.set_array([]) fig.colorbar(sm, label='func值') # 调整显示 ax.set_title('径向按func变化的嵌套圆环', y=1.1) plt.show()
关键说明:
- 调整
rho的采样数量可以控制圆环的疏密程度,按需修改即可。 - 如果需要让圆环粗细随
func变化,只需将linewidth设置为与val相关的表达式,比如linewidth=val * 0.5。
如果你的需求是固定角度、径向按func变化绘制射线(视觉上也会有辐射状嵌套效果),可以改用以下代码:
import numpy as np import matplotlib.pyplot as plt a = 0.819 * 10**-3 b = 2.73 * 10**-3 Vo = 11.27 # 生成多个固定角度 thetas = np.linspace(0, 2*np.pi, 20) # 生成径向变量rho rho = np.linspace(0.0645, 0.215, 1000) func = (Vo / np.log(b/a)) * (1 / rho) fig, ax = plt.subplots(subplot_kw={'projection': 'polar'}) for theta in thetas: # 固定角度,径向坐标为func值 ax.plot(np.full_like(rho, theta), func, color=plt.cm.viridis(theta/(2*np.pi)), linewidth=2) ax.set_title('角度恒定、径向按func变化的射线', y=1.1) plt.show()
内容的提问来源于stack exchange,提问作者lub2354
相关产品推荐
相关产品推荐

