Como desenhar um gráfico de imshow normalizado por log com uma barra de cores representando os dados brutos no matplotlib

Estou usando o matplotlib para plotar imagens normalizadas por log, mas gostaria que os dados originais da imagem bruta fossem representados na barra de cores, em vez do intervalo [0-1]. Tenho a sensação de que há uma maneira mais matlógica de fazer isso usando algum tipo de objeto de normalização e não transformando os dados de antemão ... em qualquer caso, pode haver valores negativos na imagem bruta.

import matplotlib.pyplot as plt
import numpy as np

def log_transform(im):
    '''returns log(image) scaled to the interval [0,1]'''
    try:
        (min, max) = (im[im > 0].min(), im.max())
        if (max > min) and (max > 0):
            return (np.log(im.clip(min, max)) - np.log(min)) / (np.log(max) - np.log(min))
    except:
        pass
    return im

a = np.ones((100,100))
for i in range(100): a[i] = i
f = plt.figure()
ax = f.add_subplot(111)
res = ax.imshow(log_transform(a))
# the colorbar drawn shows [0-1], but I want to see [0-99]
cb = f.colorbar(res)

Eu tentei usar cb.set_array, mas isso não pareceu fazer nada, e cb.set_clim, mas que redimensiona as cores completamente.

questionAnswers(2)

yourAnswerToTheQuestion