根据RGBA图像通道将颜色比例添加到matplotlib颜色条

时间:2019-05-03 09:20:22

标签: python matplotlib colorbar

我正在尝试绘制一个RGBA图像,其中的颜色栏代表颜色值。

RGBA图像是从原始数据生成的,根据输入的颜色将2d数据数组转换为具有x,y,[R,G,B和A]的6d数组。例如。 “绿色”将使其使用2d数组中的值填充G通道,而使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 个答案:

答案 0 :(得分:1)

您可以使用自定义的全绿色彩色地图来映射数据

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