Произвольный цветовой бар

У меня есть данные в диапазоне -70,0, которые я отображаю с помощью imshow (), и я хотел бы использовать нелинейную цветовую шкалу для представления данных, поскольку у меня есть паттерны как в диапазоне -70, -60 и -70, 0 диапазон Я хотел бы, чтобы самый простой способ изменить / перенормировать с помощью произвольной функции (см. Пример) цветовой шкалы, чтобы все шаблоны выглядели красиво.

Вот пример данных и функции:

sample_data=(np.ones((20,20))*np.linspace(0,1,20)**3)*70-70

def renorm(value):
    """
    Example of the way I would like to adjust the colorbar but it might as well be an arbitrary function
    Returns a number between 0 and 1 that would correspond to the color wanted on the original colorbar
    For the cmap 'inferno' 0 would be the dark purple, 0.5 the purplish orange and 1 the light yellow
    """

    return np.log(value+70+1)/np.log(70+1)

Ответы на вопрос(1)

Вот что мне удалось сделать:

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.colors import PowerNorm
sample_data=(np.ones((20,20))*np.linspace(0,1,20)**3)*70-70
plt.figure()
im = plt.imshow(sample_data+70, norm=PowerNorm(gamma=0.5))
cbar = plt.colorbar(orientation='horizontal')
cbar.ax.set_xticklabels(np.arange(-70, 0, 8))
plt.show()

Вы можете изменитьgamma, Однако этот вид визуализации не рекомендуется, см .:http://matplotlib.org/users/colormapnorms.html в разделе «Степенной закон» -> «Записка»

Ваш ответ на вопрос