gpt4 book ai didi

python - matplotlib 中的球面坐标图

转载 作者:太空狗 更新时间:2023-10-30 02:02:59 29 4
gpt4 key购买 nike

R(teta, phi) = cos(phi^2), teta[0, 2*pi], phi[0,pi]

如何借助 matplotlib 在球坐标系中绘制此函数 (R(teta, phi)) 的图形?我没有找到球坐标的文档。

最佳答案

下面的代码非常像 3D polar plot来自 Matplotlib 画廊。唯一的区别是您使用 np.meshgridPHITHETA 而不是 R 制作二维数组,并且THETA(或 3D 极坐标图示例所称的 P)。

这个故事的寓意是,只要XYZ都可以表示为两个的(平滑)函数参数,plot_surface 可以绘制它。

import numpy as np
import matplotlib.pyplot as plt
import mpl_toolkits.mplot3d.axes3d as axes3d

theta, phi = np.linspace(0, 2 * np.pi, 40), np.linspace(0, np.pi, 40)
THETA, PHI = np.meshgrid(theta, phi)
R = np.cos(PHI**2)
X = R * np.sin(PHI) * np.cos(THETA)
Y = R * np.sin(PHI) * np.sin(THETA)
Z = R * np.cos(PHI)
fig = plt.figure()
ax = fig.add_subplot(1,1,1, projection='3d')
plot = ax.plot_surface(
X, Y, Z, rstride=1, cstride=1, cmap=plt.get_cmap('jet'),
linewidth=0, antialiased=False, alpha=0.5)

plt.show()

产量

enter image description here


通常R,半径,应该是正的,所以你可能想要

R = np.abs(np.cos(PHI**2))

在那种情况下,

import matplotlib.colors as mcolors
cmap = plt.get_cmap('jet')
norm = mcolors.Normalize(vmin=Z.min(), vmax=Z.max())
plot = ax.plot_surface(
X, Y, Z, rstride=1, cstride=1,
facecolors=cmap(norm(Z)),
linewidth=0, antialiased=False, alpha=0.5)

产量

enter image description here

谁知道 R = np.abs(np.cos(PHI**2)) 是个穿裙子的小女孩? :)

关于python - matplotlib 中的球面坐标图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36816537/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com