python 如何实现colorbar的标签位于每个色标中间(正下方)

前言

  • python实现colorbar标签的多样化显示

大部分文献中colorbar的色标都是如下图所示:

在这里插入图片描述
以80~100表示这个范围内数据为最显著的红色,其他范围内的各个色域类似

那么,如果我希望将最右边最红的区域定义为一个字幕,并使这个字母出现在红色的正下方,该如何实现呢?

本质上其实通过定义标签的范围来实现,观察可以发现,如果将100显示为红色的正下方,其实就是在第90的位置,将label设置为100.

描述的有点抽象,这里直接放上结果:

在这里插入图片描述

附上全部代码:

# -*- coding: utf-8 -*-
"""
Created on Wed Dec  7 10:12:20 2022

@author: jianpu

@blog :  https://blog.csdn.net/weixin_44237337?spm=1000.2115.3001.5343

@email: 211311040008@hhu.edu.cn

introduction : keep learning althongh walk slowly
"""

import cmaps
from matplotlib.colors import ListedColormap 
import numpy as np
import matplotlib.pyplot as plt
import matplotlib as mpl  
rgb=(
        [ 43,67,255],
        [ 91,130,255],
        [ 136,178,255],
        [ 184,218,255],
        
        [ 255,255,255],
        [ 255,255,255],
        
        [ 255,190,190],
        [ 255,142,142],
        [ 255,97,97],
        [ 255,49,49],
        )
rgb=np.array(rgb)/255.0
newcmap=ListedColormap(rgb) 

clevs = np.linspace(-100,100,11)

fig=plt.figure(figsize=(10,10),dpi=150)
norm =mpl.colors.Normalize(vmin=-100, vmax=100) 
ax=fig.add_axes([0,0,0.5,0.05])  
fc1=fig.colorbar(
                 mpl.cm.ScalarMappable(norm=norm,cmap=newcmap,  ),   
                 cax=ax,       
                 ticks = clevs,                                               
                 orientation='horizontal',                          
                 )      
ax2=fc1.ax
ax2.xaxis.set_ticks_position('top')  #将数值刻度移动到上边
ax3=ax2.secondary_xaxis('bottom')    #新建ax3,使ax3与ax2完全相同,但是是处于下部
ax3.set_xticks([-90,-70,-50,-30,-10,10,30,50,70,90])


#这里的标签名称可以自定义修改成想要的
ax3.set_xticklabels(['a','b','c','d','e','f','g','h','i','j',],ha="center") 
  • 5
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

简朴-ocean

继续进步

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

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

打赏作者

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

抵扣说明:

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

余额充值