【问题标题】:Change default colorbar for 3D scatter plot with matplotlib使用 matplotlib 更改 3D 散点图的默认颜色条
【发布时间】: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


【解决方案1】:

您必须提供 cmap 关键字才能分散。以下是所有可能的 cmap: 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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-26
    • 1970-01-01
    • 2014-09-10
    • 1970-01-01
    • 2011-08-29
    • 2022-12-12
    • 2021-07-28
    • 2016-12-30
    相关资源
    最近更新 更多