Использование imshow () для представления 0 как белого - PullRequest
0 голосов
/ 02 мая 2020

Я огляделся и не нашел простого решения этой, казалось бы, простой проблемы онлайн или в документации по matplotlib. Я использую imshow () для создания тепловой карты матрицы с расходящейся картой (coolwarm), и я хотел бы, чтобы 0 представлялось белым, положительные значения - красным, а отрицательные значения - синим. Кто-нибудь знает простой способ сделать это без создания собственной карты?

1 Ответ

0 голосов
/ 02 мая 2020

При использовании нормализации min-max здесь ноль в исходных данных сдвигается, поэтому сдвигайте ноль, как показано ниже. Ниже показано, как я могу это сделать.


data = np.array([[0.000000,5.67],[-0.231049,0.45],[-0.231049,0.000000]])

k=(data-np.min(data))/(np.max(data)-np.min(data)) # Min-max Normalization

nsv_zero =-np.min(data)/(np.max(data)-np.min(data))  # new shifted value of zero

sns.heatmap(np.where( k == nsv_zero ,0.5 ,k),vmin=0,vmax=1,cmap='coolwarm',annot=data)


* Min-Max Normalization : Scale all the values to new range(0,1)
* Shifting zero in initial data to 0.5 in the new output data so as to get white color
* Here I am using modified data on heatmap, but I am using the original annotations only.

Надеюсь, что это немного ближе к требуемому результату

enter image description here

...