Как мне нормализовать цветовую панель matplotlib к скалярному массиву от 0 до 1? - PullRequest
0 голосов
/ 04 августа 2020

У меня есть изображение .jpg палитры, созданное с помощью matplotlib:

Colorbar

I would like to linearly assign a float to the scale so that it ranges from 0 to 1. That is, the left most colors (purple) would represent values close to zero, and the right most (red) would represent values approaching one.

My initial idea used PIL in python to convert to greyscale, and then normalize that array. The code I used is:

from PIL import Image

bar = Image.open('colorbar.png')
bar_gs = bar.convert(mode='L')
gs_values = np.zeros(bar_gs.size[1])

for i in range(0, bar_gs.size[1]):
    gs_values[i] = pix_gs[00,i]

This creates a greyscale version of the colorbar which looks like:

Greyscale ColorBar

Plotting a single row of this gives:

участок

Резкие провалы, очевидно, являются отметками. Настоящая проблема в том, что это не функция монотонного увеличения / уменьшения, как я надеялся. Мне нужно иметь одно значение по оси Y для заданного значения x. Поскольку на третьем графике есть несколько горбов, это не так.

Так что, похоже, я действительно теряю информацию из-за преобразования в оттенки серого. Моя конечная цель - дать возможность присвоить цвету значение от 0 до 1. Есть ли лучший способ go по этому поводу?

Спасибо

...