关于matplotlib画图过程中使用自定义颜色的操作

本文介绍了如何在matplotlib中利用NCL的颜色库如vegetation_modis创建自定义调色板,通过提取并组合特定颜色的RGBA值,实现对图表颜色的个性化设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

写在前面:

长夜路漫漫,感谢每个愿意帮助其他Programmer的人,感恩!

在使用matplotlib画图过程中突发奇想,除了官方库中提供的调色盘中的颜色,是否能够利用别的调色盘(颜色库,例如NCL)的颜色,这就涉及matplotlib库中的颜色到底是怎么调用出来的问题,在此指路:Creating Colormaps in Matplotlib — Matplotlib 3.8.3 documentation

官方介绍的比较清楚啦!

接下来,就以NCL中的颜色为例,介绍如何调用。首先,你需要先装上cmaps这个库,以及在NCL颜色库中选择一个colorbar。NCL指路:vegetation_modis color table (ucar.edu)

例子中使用到的colorbar的名字为:vegetation_modis  可以看到其中包含21种颜色。

查看vegetation_modis中各个颜色的RGBA信息:

import cmaps
# 在这里导入NCL库中的一个colorbar,并且将其读成一个颜色列表
newcolors = cmaps.vegetation_modis (np.linspace(0, 1, 21))
newcolors

可以看到输出的颜色列表中已经有了21种颜色对应的RGBA信息。

何谓RGBA呢?RGB或RGBA(红、绿、蓝、alpha) 浮点值的元组 间隔[0,1]

颜色的alpha值指定了它的透明度,其中0表示完全透明 透明和1是完全不透明的。当一种颜色是半透明的时候 背景颜色会显示出来。

表格中的四列就分别对应"R"、"G"、"B"、"A"的参数。那么,我现在要调用vegetation_modis中的三种颜色怎么办呢?

#命名三个取出来的颜色为sand1、sand2、sand3,按照表格中的参数创建一个数组如下
sand1 = np.array([0.88235294/1, 0.49019608/1, 0/1, 1])
sand2 = np.array([0.33333333/1, 0/1, 0/1, 1]) 
sand3 = np.array([0/1, 0.88235294/1, 0/1, 1])
#创建一个列表用于保存你需要的颜色
a = [sand1, sand2, sand3]# 把这三个颜色组成的列表
newcmp = ListedColormap(a)# 从颜色列表创建colarmap对象

那么至此,专属于你的colormap就已经定制好了接下来就是"cmap = newcmp"就可以使用啦!

newcmp预览完整代码如下:

import cmaps
# 在这里导入NCL库中的一个colorbar,并且将其读成一个颜色列表
newcolors = cmaps.vegetation_modis (np.linspace(0, 1, 21))
print(newcolors)# 输出颜色列表
# 把你需要的颜色取出来
sand1 = np.array([0.88235294/1, 0.49019608/1, 0/1, 1])
sand2 = np.array([0.33333333/1, 0/1, 0/1, 1])
sand3 = np.array([0/1, 0.88235294/1, 0/1, 1])
# 将取出来的颜色保存在列表中
a = [sand1, sand2, sand3]
# 生成一个colormap对象
newcmp = ListedColormap(a)
# plot_examples([cmaps.CBR_drywet, newcmp])
plot_examples([newcmp])

结果:

感谢你能看到这!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值