我正在imshow
使用 MxNx4 数组的输入来绘制图像,这是一个A
为矩形 MxN 网格定义的 RGBA 数组。这种着色是从V
一个 MxN 数组生成的,该数组表示这些点中的每一个的标量值。即我有一个函数f
,它接受一个标量值并返回一个 RGBA 元组:f(V) = A
我想制作一个作为输入的颜色条f,V
。这可能吗?
我正在imshow
使用 MxNx4 数组的输入来绘制图像,这是一个A
为矩形 MxN 网格定义的 RGBA 数组。这种着色是从V
一个 MxN 数组生成的,该数组表示这些点中的每一个的标量值。即我有一个函数f
,它接受一个标量值并返回一个 RGBA 元组:f(V) = A
我想制作一个作为输入的颜色条f,V
。这可能吗?
要创建彩色地图,您必须指定红/绿/蓝分量如何在线性比例上变化。看起来您已经有了一个函数,f
它可以为您设置 r/g/b 组件。困难的部分是第 4 个通道,即 alpha 通道。我将根据您指定的 RGB 颜色图设置 alpha 通道f
。
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.cm as cm
# some data
a = np.sort(np.random.randn(10, 10))
# use the default 'jet' colour map for showing the difference later
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
ax.imshow(a, cmap=cm.get_cmap('jet'))
fig.savefig('map1.png')
# let's use jet and modify the alpha channel
# you would use your own colour map specified by f
my_cmap = cm.get_cmap('jet')
# this is a hack to get at the _lut array, which stores RGBA vals
my_cmap._init()
# use some made-up alphas, you would use the ones specified by f
alphas = np.abs(np.linspace(-1.0, 1.0, my_cmap.N))
# overwrite the alpha channel of the jet colour map
my_cmap._lut[:-3,-1] = alphas
# plot data with our modified colour map
fig = plt.figure()
ax = fig.add_subplot(1,1,1)
ax.imshow(a, cmap=my_cmap)
fig.savefig('map2.png')
这是map1.png
:
这是map2.png
:
希望这可以帮助。