matplotlib中的距离相关着色

2024-06-01 08:11:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我想画一些电磁散射过程的远场图。在

为此,我计算了θ、φ和r值。坐标θ和φ在unitsphere上创建了一个规则的网格,因此我可以使用plot_Surfacefound here)来转换成笛卡尔坐标。在

我现在的问题是,我需要一种方法来根据半径r而不是高度z来着色曲面,这似乎是默认值。在

有没有办法改变这种依赖关系?在


Tags: 方法网格高度hereplot规则过程半径
1条回答
网友
1楼 · 发布于 2024-06-01 08:11:16

我不知道你过得怎么样,也许你已经解决了。但是,根据保罗评论的链接,你可以这样做。我们使用plot_surface的facecolor参数传递所需的颜色值。在

(我修改了matplotlib文档中的surface3d演示)

编辑:正如Stefan在评论中指出的,我的回答可以简化为:

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

fig = plt.figure()
ax = fig.gca(projection='3d')
X = np.arange(-5, 5, 0.25)
xlen = len(X)
Y = np.arange(-5, 5, 0.25)
ylen = len(Y)
X, Y = np.meshgrid(X, Y)
R = np.sqrt(X**2 + Y**2)
maxR = np.amax(R)
Z = np.sin(R)

# Note that the R values must still be normalized.
surf = ax.plot_surface(X, Y, Z, rstride=1, cstride=1, facecolors=cm.jet(R/maxR),
        linewidth=0)

plt.show()

和(结束)我不必要的复杂的原始版本,使用相同的代码,尽管省略了地图库.cm进口

^{pr2}$

相关问题 更多 >