Python 如何使用matplotlib根据条形图高度绘制特定颜色的三维条形图

Python 如何使用matplotlib根据条形图高度绘制特定颜色的三维条形图,python,python-3.x,matplotlib,3d,Python,Python 3.x,Matplotlib,3d,嘿,伙计们,我正在使用matplotlib绘制3D条形图。我想知道是否有可能根据每个条(总共9条)的值(dz)为其指定不同的颜色,并在该图中显示相应的级别 非常感谢 我的代码如下: fig_stat=plt.figure(dpi=100) ax_stat = fig_stat.add_subplot(111, projection='3d') xpos = [1, 1, 1, 3, 3, 3, 5, 5, 5] ypos = [1, 3, 5, 1, 3, 5, 1, 3, 5] # init

嘿,伙计们,我正在使用matplotlib绘制3D条形图。我想知道是否有可能根据每个条(总共9条)的值(dz)为其指定不同的颜色,并在该图中显示相应的级别

非常感谢

我的代码如下:

fig_stat=plt.figure(dpi=100)
ax_stat = fig_stat.add_subplot(111, projection='3d')

xpos = [1, 1, 1, 3, 3, 3, 5, 5, 5]
ypos = [1, 3, 5, 1, 3, 5, 1, 3, 5]
# initial z position (x-y plane), np.zeros(x), x
zpos = [0, 0, 0, 0, 0, 0, 0, 0, 0]
# x is the number of points you need

dx = np.ones(9)
dy = np.ones(9)
# dz = [1, 2, 3, 4, 10, 6, 7, 8, 9]  # signal intensity
dz = col_stat.iloc[:, -2]
ax_stat.set_xlabel('X axis')
ax_stat.set_ylabel('Y axis')
ax_stat.set_zlabel('Signal Intensity')
ax_stat.bar3d(xpos, ypos, zpos, dx, dy, dz, color='#00ceaa')
plt.title("Position_{}".format(L)) 

bar3d
方法允许输入与数据数组长度相同的数组作为颜色。因此,可以使用颜色映射来获得与每个
dz
对应的颜色:

from matplotlib import cm
from matplotlib.colors import Normalize
cmap = cm.get_cmap('plasma')
norm = Normalize(vmin=min(dz), vmax=max(dz))
colors = cmap(norm(dz))
并将此
颜色
用作bar3d颜色参数中的输入,而不是
'#00ceaa'
。之后,可以使用以下代码显示颜色栏:

sc = cm.ScalarMappable(cmap=cmap,norm=norm)
sc.set_array([])
plt.colorbar(sc)
将生成如下所示的绘图:


嘿,谢谢你的帮助。但是,在我添加了你的代码之后,它有一些错误。嘿,谢谢你的帮助。然而,在我添加了你的代码后,它的“未知投影”3d有点问题。你能告诉我在你方便的时候在哪里把你的代码添加到我的代码中吗?我的电子邮件是tracygao911@gmail.com谢谢。我找到了原因,我错过了软件包:从mpl_toolkits.mplot3d导入Axes3DYes,它仍然是必要的。我只包含了必须添加的代码,导入Axes3D必须包含在原始代码中。我希望一切都很清楚,我没有错过任何问题的答案!这对我帮助很大。谢谢:)