Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从matplotlib中的RGBA函数创建颜色栏_Python_Matplotlib - Fatal编程技术网

Python 从matplotlib中的RGBA函数创建颜色栏

Python 从matplotlib中的RGBA函数创建颜色栏,python,matplotlib,Python,Matplotlib,我正在通过imshow绘制图像,输入MxNx4阵列a,这是一个为矩形MxN网格定义的RGBA阵列。该着色是由V生成的,这是一个MxN数组,表示这些点中每一点的标量值。也就是说,我有一个函数f,它接受一个标量值并返回一个RGBA元组:f(V)=a 我想制作一个颜色条,它以f,V作为输入。这可能吗?要创建颜色贴图,必须指定红色/绿色/蓝色分量在线性比例上的变化方式。看起来您已经有了一个函数,f,可以为您设置r/g/b组件。最难的部分是第四个通道,阿尔法通道。我将根据您的f指定的RGB颜色贴图设置al

我正在通过
imshow
绘制图像,输入MxNx4阵列
a
,这是一个为矩形MxN网格定义的RGBA阵列。该着色是由
V
生成的,这是一个MxN数组,表示这些点中每一点的标量值。也就是说,我有一个函数
f
,它接受一个标量值并返回一个RGBA元组:
f(V)=a


我想制作一个颜色条,它以f,V作为输入。这可能吗?

要创建颜色贴图,必须指定红色/绿色/蓝色分量在线性比例上的变化方式。看起来您已经有了一个函数,
f
,可以为您设置r/g/b组件。最难的部分是第四个通道,阿尔法通道。我将根据您的
f
指定的RGB颜色贴图设置alpha通道

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


希望这有帮助。

这太完美了!我从来没有听说过对成员变量
\u lut
的低级攻击,我也在文档中找不到它。可以从链接到它吗?以下划线开头的成员变量是私有的。你不应该摆弄他们,通常是因为有充分的理由。不过,我确实看到了能够指定RGBA颜色条的重要性。编辑:对于用户来说,私有变量成员通常是没有文档的。这很公平,不过我认为在这种情况下,我们都同意应该公开某种功能。再次感谢!当然可以您可以使用GitHub问题跟踪器打开功能请求。希望这有帮助。