【发布时间】:2014-09-24 02:53:21
【问题描述】:
我有 3d 坐标来定义我的 3D 散点图中点的位置以及相应数量的值,我想创建一个色标来表示值的范围:
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
xs,ys,zs = np.random.random(50),np.random.random(50),np.random.random(50)
values = np.random.random(50)*10
p = ax.scatter3D(xs, ys, zs=zs, c=values)
cbar = fig.colorbar(p)
cbar.cmap(plt.cm.Greys)
没有最后一行cbar.cmap(plt.cm.Greys) 我得到一个默认颜色图(我认为是jet)但是当我尝试修改它时我得到错误TypeError: Cannot cast array data from dtype('O') to dtype('int64') according to the rule 'safe'。我希望能够改变这一点,我一直在查看文档,但似乎有很多不同的方法可以做类似的事情。如何从这一点更改默认颜色图?
我是
【问题讨论】:
-
试试
ax.scatter3D(..., cmap='gray') -
如果我取出最后一行并按照您所说的进行操作,我会在
cbar = fig.colorbar(p)收到错误消息TypeError: You must first set_array for mappable。如果我取出最后两行,则没有颜色条,并且点是不同深浅的蓝色,而不是灰色。
标签: python matplotlib 3d scatter-plot colormap