使用matplotlib更改3D散点图的默认颜色条

时间:2014-08-01 00:33:48

标签: python matplotlib 3d scatter-plot colormap

我有三维坐标定义了我的三维散点图中点的位置,并且我想要创建一个颜色标度来表示相应的值范围:

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)我得到一个默认的colormap(我认为是jet),但是当我尝试修改它时,我收到错误TypeError: Cannot cast array data from dtype('O') to dtype('int64') according to the rule 'safe'。我希望能够改变这一点,我一直在查看文档,但似乎有很多不同的方法来做类似的事情。如何从这一点更改默认色图?

我'米

1 个答案:

答案 0 :(得分:6)

您必须为散布提供cmap关键字。以下是所有可能的cmaps: http://matplotlib.org/examples/color/colormaps_reference.html 你可能想把斧头加到颜色条上。

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, cmap='hot')

fig.colorbar(p, ax=ax)

enter image description here