Добавьте цветовую шкалу на цветовую панель matplotlib в соответствии с каналами изображения RGBA - PullRequest
2 голосов
/ 03 мая 2019

Я пытаюсь построить изображение RGBA с цветовой шкалой, представляющей значения цвета.

Изображение RGBA генерируется из необработанных данных, преобразуя 2d массив данных в 6d-массив с x, y, [R, G, B и A] в соответствии с вводом цвета. Например. «зеленый» заставит его заполнить только канал G значениями из 2d-массива, оставив R и B = 0 и A = 255. Например:

data_to_color_equation

Все решения, которые я нашел, будут применять цветовую карту или ограничивать vmin и vmax цветовой шкалы, но мне нужна цветовая полоса, которая идет от черного до самого яркого цвета, присутствующего на изображении. Например. если у меня есть изображение в оттенках фиолетового, цветная полоса должна измениться от 0 до «полного» фиолетового с только оттенками фиолетового в нем. Наиболее близким решением, которое я нашел, было это (https://pelson.github.io/2013/working_with_colors_in_matplotlib/),, но оно не соответствует «общему» решению.
Изображение, которое я получаю, дано ниже.

color_data_plot

import numpy as np
from ImgMath import colorize
import matplotlib.pyplot as plt
import Mapping

data = Mapping.getpeakmap('Au')
# data shape is (10,13) and len(data) is 10

norm_data = data/data.max()*255
color_data = colorize(norm_data,'green')
# color_data shape is (10,13,4) and len(color_data) is 10

fig, ax = plt.subplots()
im = plt.imshow(color_data)
fig.colorbar(im)
plt.show()

1 Ответ

1 голос
/ 03 мая 2019

Вы можете сопоставить свои данные с пользовательской, полностью зеленой, цветовой картой

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.colors import ListedColormap

# input 2D array
data = np.random.randint(0,255, size=(10,13))

z = np.zeros(256)
colors = np.linspace(0,1,256)
alpha = np.ones(256)

#create colormap
greencolors = np.c_[z,colors,z,alpha]
cmap = ListedColormap(greencolors)


im = plt.imshow(data/255., cmap=cmap, vmin=0, vmax=1)
plt.colorbar(im)

plt.show()

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...