更改matplotlib 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'
。我希望能够更改这个默认的颜色图,我查阅了文档,但发现有很多不同的方法可以实现类似的功能。那么,我该如何从这里开始更改默认的颜色图呢?
我
1 个回答
10
你需要为散点图提供一个 cmap
关键字。这里有所有可能的颜色映射(cmaps)列表:http://matplotlib.org/examples/color/colormaps_reference.html。另外,你可能还想把坐标轴(ax)添加到颜色条上。
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)