Изменить цветовую полосу по умолчанию для 3D-графика рассеяния с помощью matplotlib

У меня есть 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) я получаю цветовую карту по умолчанию (я думаю, реактивный), но когда я пытаюсь изменить это, я получаю сообщение об ошибке TypeError: Cannot cast array data from dtype('O') to dtype('int64') according to the rule 'safe'. Я хотел бы иметь возможность изменить это, и я просматривал документацию, но кажется, что существует так много разных способов делать подобные вещи. Как я могу изменить цветовую карту по умолчанию с этой точки?

I'm


person pbreach    schedule 01.08.2014    source источник
comment
попробуй ax.scatter3D(..., cmap='gray')   -  person tacaswell    schedule 01.08.2014
comment
Если я уберу последнюю строку и сделаю то, что вы упомянули, я получу сообщение об ошибке cbar = fig.colorbar(p), говоря: TypeError: You must first set_array for mappable. Если я уберу последние две строки, цветной полосы не будет, а точки будут иметь разные оттенки синего, а не серую цветовую шкалу.   -  person pbreach    schedule 01.08.2014


Ответы (1)


Вы должны указать ключевое слово 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)

введите здесь описание изображения

person MaxNoe    schedule 01.08.2014