通过给定的色彩参数转换成颜色RGBA参数。
库依赖
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.colors as colors
import matplotlib.cm as cmx
思路步骤
1. 选择色条配色方案
colors_map = plt.get_cmap('seismic') # 选择色条方案
部分可选方案:
- perceptual uniform sequential colormaps:感知均匀的序列化 colormap
- sequential colormaps:序列化(连续化)色图 colormap;
- gray:0-255 级灰度,0:黑色,1:白色,黑底白字;
- gray_r:翻转 gray 的显示,如果 gray 将图像显示为黑底白字,gray_r 会将其显示为白底黑字;
- binary
- diverging colormaps:两端发散的色图 colormaps;
- seismic
- qualitative colormaps:量化(离散化)色图;
- miscellaneous colormaps:其他色图;
- rainbow
P.S. 在
plt.imshow()
时也可选择不同色彩方案: 例如:
plt.imshow(image, cmap=plt.get_cmap('gray_r'))
plt.imshow(image, cmap='gray_r')
plt.imshow(image, cmap=plt.cm.binary)
2. 将参数映射的数值范围归一化,并映射到色条
cNorm = colors.Normalize(vmin=0, vmax=5) # 选择对应色条的最小值和最大值
scalarMap = cmx.ScalarMappable(norm=cNorm, cmap=colors_map)
3. 转换对应颜色ScalarMap到RGBA格式
colorVal = scalarMap.to_rgba(i) # i为参数,在参数列表的范围内
plt.plot(x, y, c = colorVal)
使用例
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.colors as colors
import matplotlib.cm as cmx
colors_map = plt.get_cmap('seismic') # 选择色条方案
# e.g. Greys, Blues, jet
cNorm = colors.Normalize(vmin=0, vmax=5) # 选择对应色条的最小值和最大值
print(cNorm) # 保存为一个色彩Normalize的d对象
scalarMap = cmx.ScalarMappable(norm=cNorm, cmap=colors_map) # 映射色彩对应值到具体的色条
print(scalarMap.get_clim()) # 查看色条对应的数值范围
plt.figure()
x = np.arange(10)
y = np.arange(10,20)
for i in range(5):
colorVal = scalarMap.to_rgba(i) # 通过参数i将色条里的颜色转换为RGBA格式(红色-绿色-蓝色-透明度
print(i, colorVal)
plt.plot(x, y + i, c = colorVal)
plt.show()