gpt4 book ai didi

python - 在 Python 中将颜色映射到颜色条中

转载 作者:太空宇宙 更新时间:2023-11-03 18:05:45 25 4
gpt4 key购买 nike

我使用下面的代码来生成 3D 曲面图。我希望颜色代表半径的值。如何绘制相应的颜色条?

我相信问题是我在制作曲面图时使用facecolors。所以我需要根据这个facecolors制作colorbar。

我知道我必须将这些颜色映射到颜色栏,只是我不知道如何。

import numpy as np
import matplotlib.pyplot as plt

def sph2cart(theta, phi, radius):
x_cart = radius * np.sin(theta) * np.cos(phi)
y_cart = radius * np.sin(theta) * np.sin(phi)
z_cart = radius * np.cos(theta)
return np.array([x_cart, y_cart, z_cart])

def antenna_plot_3D(mod_F, T, P):
[x, y, z] = sph2cart(T, P, mod_F)
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1, projection='3d')
p_surf = ax.plot_surface(x, y, z, rstride=1, cstride=1,
linewidth=0, antialiased=True,
facecolors=cm.jet(np.sqrt(x*x + y*y + z*z)))
ax.set_zlabel('Z axis', fontsize=15)
ax.set_xlabel('X axis', fontsize=15)
ax.set_ylabel('Y axis', fontsize=15)
plt.savefig('3d_pattern.png')
plt.show()

x = 300
t = np.linspace(0, np.pi, num=x)
p = np.linspace(0,2*np.pi, num=x)
[T,P] = np.meshgrid(t,p)
mod_F = np.sin(T) * np.cos(P)
antenna_plot_3D(mod_F, T, P)

我希望表面有颜色,并且颜色应该代表半径。

最佳答案

下面完成了任务

fig = plt.figure()
ax = fig.add_subplot(1, 1, 1, projection='3d')
p_surf=ax.plot_surface(x,y,z,rstride=1,cstride=1,linewidth=0,antialiased=True,facecolors=cm.jet(np.sqrt(x*x + y*y + z*z)))
m = cm.ScalarMappable(cmap=cm.jet)
m.set_array(x*x + y*y + z*z)
plt.colorbar(m)
plt.show()

关于python - 在 Python 中将颜色映射到颜色条中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26935977/

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