python - 将径向数据转换为笛卡尔网格以绘制曲面图

标签 python numpy matplotlib

我有一个数据列表,其分量对应于二维网格上某个径向距离 r 处的电势。数据对应于极坐标中的数据点,并且在 theta 分量中对称

import numpy as np
import matplotlib.pyplot as plt

r = np.linspace(1.0, 5.0, 99)
#Data looks like:
V = np.array([9.0,...,0.0])

x = np.linspace(-5.0,5.0,99)
y = np.linspace(-5.0,5.0,99)

xx,yy = np.meshgrid(x,y)

我想在 (x,y) 空间中创建数据的曲面图,但是要使用 matplotlib,您需要一个与每个 (x,y) 位置处的电位相对应的数据点网格。鉴于我有一组在 (r,theta) 空间中测量的数据,如何创建曲面图?

最佳答案

您需要首先将数据转换为笛卡尔坐标,并通过为每个 theta 重复值 V 来创建与网格网格形状相同的值数组。

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

fig = plt.figure()

ax = fig.gca(projection='3d')

r = np.linspace(1.0, 5.0, 99)
V = np.sqrt(np.sinc(r-0.5)**2) # your data here (same length as r)


theta = np.linspace(0,2*np.pi,50)
R, Theta = np.meshgrid(r,theta)
X = R * np.cos(Theta)
Y = R * np.sin(Theta)
Z = np.tile(V,(len(theta),1))

norm = plt.Normalize(vmin=Z.min(), vmax=Z.max())
ax.plot_surface(X,Y,Z, facecolors=plt.cm.RdYlGn(norm(Z)))

plt.show()

enter image description here

关于python - 将径向数据转换为笛卡尔网格以绘制曲面图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47146855/

相关文章:

Python:如何修改字典列表中的特定(键,值)对?

python - 如何在python中以随机角度旋转3D图像

python - 大阵列 3D 中两点之间的距离

python - 将行追加到 NumPy 记录数组

python - matplotlib 图例中的两个相邻符号

python - 使用 Wing IDE 调试多线程 Python

javascript - 在 Django 应用程序中包含 python 控制台以与数据集交互

python - 产生 OverflowError 的十进制数的幂

python 3 : matplotlib plotting four lines with dictionary

python - 如何根据 CSV 列中的元素在 Matplotlib-Basemap 图上设置不同的标记?