Как установить цветовой эквивалент matplotlib colorbar?

Я хотел бы отобразить цветную панель, представляющую необработанные значения изображения вдоль стороны matplotlib imshow subplot, которая отображает это изображение, нормализованное.

Я смог нарисовать изображение и цветную панель успешно, как это, но значения colorbar min и max представляют собой нормированное (0,1) изображение вместо необработанного изображения (0,99).

f = plt.figure() # create toy image im = np.ones((100,100)) for x in range(100): im[x] = x # create imshow subplot ax = f.add_subplot(111) result = ax.imshow(im / im.max()) # Create the colorbar axc, kw = matplotlib.colorbar.make_axes(ax) cb = matplotlib.colorbar.Colorbar(axc, result) # Set the colorbar result.colorbar = cb 

Если кто-то лучше овладеет API-интерфейсом colorbar, я хотел бы услышать от вас.

Благодаря! Адам

Похоже, вы передали неправильный объект конструктору colorbar.

Это должно работать:

 # make namespace explicit from matplotlib import pyplot as PLT cbar = fig.colorbar(result) 

Вышеприведенный фрагмент основан на коде в вашем ответе; вот полный, автономный пример:

 import numpy as NP from matplotlib import pyplot as PLT A = NP.random.random_integers(0, 10, 100).reshape(10, 10) fig = PLT.figure() ax1 = fig.add_subplot(111) cax = ax1.imshow(A, interpolation="nearest") # set the tickmarks *if* you want cutom (ie, arbitrary) tick labels: cbar = fig.colorbar(cax, ticks=[0, 5, 10]) # note: 'ax' is not the same as the 'axis' instance created by calling 'add_subplot' # the latter instance i bound to the variable 'ax1' to avoid confusing the two cbar.ax.set_yticklabels(["lo", "med", "hi"]) PLT.show() 

Как я уже сказал в вышеприведенном комментарии, я бы выбрал более чистое пространство имен , которое у вас есть – например, в NumPy и Matplotlib есть модули с тем же именем.

В частности, я бы использовал этот оператор импорта для импорта «основной» функции построения графика Matplotlib:

 from matplotlib import pyplot as PLT 

Конечно, это не дает полное пространство имен matplotlib (которое действительно является точкой этого оператора импорта), хотя обычно это все, что вам нужно.

Я знаю, что может быть слишком поздно, но …
Для меня замена в последней строке result кода Адама производится ax .