Python | 自定义colormap | 设置对称colormap

写在前面

本文记录一个常用的自定义colormap的函数,主要有两个功能实现:

  • 设置第一个颜色为白色
  • 设置中间的颜色为白色

主要实现函数

以下是主要的实现函数:

import cmaps
import matplotlib as mpl   
import matplotlib.pyplot as plt

def get_cmap_pr(n_colors: int, newcmap = cmaps.MPL_RdYlBu, method: int = None) -> list:
    """
    根据指定的颜色数量和方法生成一个颜色列表。

    参数:
    n_colors (int): 需要生成的颜色数量。
    newcmap (callable): 用于生成颜色的 colormap 函数,默认为 cmaps.MPL_RdYlBu。
    method (int, 可选): 修改颜色列表的方法。
        - 如果为 1,第一个颜色设为白色。
        - 如果为 2,将中间的颜色设为白色。

    返回:
    list: 生成的颜色列表。
    """
    index = list(range(1, n_colors + 1))
    
    color_list = [newcmap(i / n_colors) for i in index]
    
    if method == 1:
        color_list[0] = [1., 1., 1.]  # 第一个颜色设为白色
    elif method == 2:
        mid_index = len(color_list) // 2
        color_list[mid_index] = [1., 1., 1.]  # 将中间的颜色设为白色
        color_list[mid_index - 1] = [1., 1., 1.]
    
    return color_list

效果

如果使用的是默认的colormap,随便传入一个生成的颜色数量,则显示如下效果:

cmap1 = get_cmap_pr(10)

fig, ax = plt.subplots(figsize=(6, 1))
fig.subplots_adjust(bottom=0.5)

# 创建一个 colormap 对象
cmap = mpl.colors.ListedColormap(cmap1)

# 创建一个颜色条
norm = mpl.colors.Normalize(vmin=-10, vmax=10)
cb1 = mpl.colorbar.ColorbarBase(ax, cmap=cmap, norm=norm, orientation='horizontal')

plt.show()

使用方法1,则设置第一个颜色为白色:

cmap1 = get_cmap_pr(10,method=1)

使用方法2,则设置中间的两个颜色为白色:

cmap1 = get_cmap_pr(10,method=2)

总结

以上函数适用于设置的colorbar的颜色数量为偶数的设置情况,常用于以0为中心的正负对称colormap以及希望设置第一个颜色为白色的colormap的情况。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

简朴-ocean

继续进步

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值