Подтвердить что ты не робот

Установка цветового диапазона matplotlib

Я хотел бы установить диапазон цветовых пар matplotlib. Вот что я до сих пор:

import numpy as np
import matplotlib.pyplot as plt
x = np.arange(20)
y = np.arange(20)
data = x[:-1,None]+y[None,:-1]

fig = plt.gcf()
ax = fig.add_subplot(111)

X,Y = np.meshgrid(x,y)
quadmesh = ax.pcolormesh(X,Y,data)
plt.colorbar(quadmesh)

#RuntimeError: You must first define an image, eg with imshow
#plt.clim(vmin=0,vmax=15)  

#AttributeError: 'AxesSubplot' object has no attribute 'clim'
#ax.clim(vmin=0,vmax=15) 

#AttributeError: 'AxesSubplot' object has no attribute 'set_clim'
#ax.set_clim(vmin=0,vmax=15) 

plt.show()

Как установить здесь границы цвета?

4b9b3361

Ответ 1

Arg. Это всегда последнее, что вы пытаетесь:

quadmesh.set_clim(vmin=0, vmax=15)

работы.

Ответ 2

Matplotlib 1.3.1 - Похоже, что цветные галочки отображаются только тогда, когда отображается цветная панель. Изменение границ цветовой панели (set_clim) не приводит к повторному рисованию тиков.

Решение, которое я нашел, состояло в том, чтобы повторно указать цветную панель в той же позиции оси, что и исходная панель цветов. В этом случае ось [1] была исходной колорией. Добавлен новый экземпляр colorbar с обозначением cax = (дочерние оси) kwarg.

           # Reset the Z-axis limits
           print "resetting Z-axis plot limits", self.zmin, self.zmax
           self.cbar = self.fig.colorbar(CS1, cax=self.fig.axes[1]) # added
           self.cbar.set_clim(self.zmin, self.zmax)
           self.cbar.draw_all()

Ответ 3

[Извините, на самом деле комментарий The Red Gator в Virginias отвечает, но не хватает репутации для комментариев]

Я застрял в обновлении colorbar объекта imshow после его рисования и изменения данных с помощью imshowobj.set_data(). Использование cbarobj.set_clim() действительно обновляет цвета, но не галочки или диапазон цветовой панели. Вместо этого вы должны использовать imshowobj.set_clim(), который будет корректно обновлять изображение и colorbar.

data = np.cumsum(np.ones((10,15)),0)
imshowobj = plt.imshow(data)
cbarobj = plt.colorbar(imshowobj)
imshowobj.set_data(data/10) #scale is wrong now, shows only dark color
#cbarobj.set_clim(0,1) #! image colors will update, but cbar ticks not
imshowobj.set_clim(0,1) #correct