python matplotlib 透明热图颜色条

问题描述 投票:0回答:1

如何实现这样的 python matplotlib heatmap colorbar?

plt.imshow(a,aspect='auto', cmap=plt.cm.gist_rainbow_r)
plt.colorbar()
python matplotlib heatmap colorbar
1个回答
22
投票

此 matplotlib 文档页面显示了制作自定义颜色图的一些不同方法,包括透明度:https://matplotlib.org/stable/users/explain/colors/index.html

就您而言,您似乎想要 gist_rainbow 颜色图的修改版本。您可以通过修改 Alpha 通道来实现此目的,如下所示:

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

# get colormap
ncolors = 256
color_array = plt.get_cmap('gist_rainbow')(range(ncolors))

# change alpha values
color_array[:,-1] = np.linspace(1.0,0.0,ncolors)

# create a colormap object
map_object = LinearSegmentedColormap.from_list(name='rainbow_alpha',colors=color_array)

# register this new colormap with matplotlib
plt.colormaps.register(cmap=map_object)

# show some example data
f,ax = plt.subplots()
h = ax.imshow(np.random.rand(100,100),cmap='rainbow_alpha')
plt.colorbar(mappable=h)

上面的代码将创建一个颜色图

rainbow_alpha
,它在开始时完全不透明,并线性地将透明度更改为在结束时完全透明。如果你想要相反的效果(开始时透明,结束时不透明),你可以像这样更改第 9 行:

color_array[:,-1] = np.linspace(0.0,1.0,ncolors)

您还可以更改单个值的透明度:

 color_array[0,-1] = 0.0

注意: 对于 matplotlib 版本 <3.7 colormaps were registered using

plt.register_cmap

© www.soinside.com 2019 - 2024. All rights reserved.