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

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

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()