python matplotlib自定义colorbar颜色条及内置色条详解

作者:liucheng_zimozigreat 时间:2023-04-03 16:50:34 

PS: 传送门——自定义Colorbars教程

自定义colorbar(draw colorbar without any mapple/plot)

参考:Customized Colorbars Tutorial

   api example code: colorbar_only.py

自定义colorbar可以画出任何自己想要的colorbar,自由自在、不受约束,不依赖于任何已有的图(plot/mappable)。这里使用的是mpl.colorbar.ColorbarBase类,而colorbar类必须依赖于已有的图。

关于该类的参数如下 (该类参数描述没找到,部分参数的取值可参考colorbar中的描述):

class matplotlib.colorbar.ColorbarBase(ax, cmap=None, norm=None, alpha=None, values=None, boundaries=None, orientation=‘vertical’, ticklocation=‘auto’, extend=‘neither’, spacing=‘uniform’, ticks=None, format=None, drawedges=False, filled=True, extendfrac=None, extendrect=False, label=’’)[source]
参数简单描述

ax :可用于设置colorbar的位置、长、宽
norm :用于规范化–设置颜色条最大最小值
cmap:颜色(可参考本篇博文的最后部分——推荐色带与自定义色带)
boundaries:要想使用extend,在norm之外,必须要有两个额外的boundaries
orientation:colorbar方向,躺平or垂直
extend:延伸方向(在norm之外colorbar可延伸)
ticks:自定义各段的tick(记号)

下面是一个例子,可以自己试试调整各项参数:

import numpy as np
import pylab as plt
import matplotlib as mpl

if __name__ == '__main__':
fig = plt.figure(figsize=(3, 8))
cmap = mpl.cm.Spectral_r
ax3 = fig.add_axes([0.3, 0.2, 0.2, 0.5]) # 四个参数分别是左、下、宽、长
norm = mpl.colors.Normalize(vmin=1.3, vmax=2.5)
bounds = [ round(elem, 2) for elem in np.linspace(1.3, 2.5, 14)] #
cb3 = mpl.colorbar.ColorbarBase(ax3, cmap=cmap,
norm=norm,
# to use 'extend', you must
# specify two extra boundaries:
boundaries= [1.2] + bounds + [2.6],
extend='both',
ticks=bounds,  # optional
spacing='proportional',
orientation='vertical')
plt.show()

contourf函数

contour和contourf分别绘制轮廓线和填充轮廓线。两个版本的函数签名和返回值是相同的。关于两者画图的一些实例可以参阅python matplotlib contour画等高线图,以及matplotlib中文文档

contourf([X, Y,] Z, [levels], **kwargs) # [ ]表示该参数是可选的——可以给定也可以不给定

contourf中的基本参数:

X, Y : array-like, optional

  contourf参数中X和Y都必须是二维的,形状与Z相同(例如,通过numpy.meshgrid创建);或者都必须是一维的,这样len(X) == M是Z中的列数,len(Y) == N是Z中的行数。
  如果没有给定,则假设它们是整数索引,即X = range(M), Y = range(N)。

Z : array-like(N, M)

绘制轮廓线的高度值。

levels : int or array-like, optional

确定等高线/区域的数量和位置。
如果是int n,则使用n个数据间隔;即画n+1条等高线。水平高度是自动选择的。
如果类似数组,则在指定的级别上绘制等高线。这些值必须是递增的。

为所有子图添加一个色带

参考:Matplotlib 2 Subplots, 1 Colorbar

在有图的情况下,为所有子图添加一个colorbar:

import numpy as np
import matplotlib.pyplot as plt

fig, axes = plt.subplots(nrows=2, ncols=2)
for ax in axes.flat:
   im = ax.imshow(np.random.random((10,10)), vmin=0, vmax=1)

fig.subplots_adjust(right=0.8)
cbar_ax = fig.add_axes([0.85, 0.15, 0.05, 0.7])
fig.colorbar(im, cax=cbar_ax)

plt.show()

推荐色带与自定义色带

在画图的时候,可以用推荐色带。在Contourf 与记录颜色刻度中,发现contourf中有cmap参数,cmap即是色带。cmap的值可以参考Colormap reference。

下面这段代码来自Contourf 与记录颜色刻度

cs = ax.contourf(X, Y, z, locator=ticker.LogLocator(), cmap=cm.PuBu_r) # PuBu_r是PuBu色带的倒转
cbar = fig.colorbar(cs)

其中cmap就是使用matplotlib提供的色带,如果要自己制定色带可以用参数colors如下:

# Colors是一些自选颜色列表
Colors=('#DDDDFF','#7D7DFF','#0000C6','#000079','#CEFFCE','#28FF28','#007500','#FFFF93','#8C8C00','#FFB5B5','#FF0000','#CE0000','#750000')
cs=m.contourf(xi, yi, z, colors=Colors, levels=levels, extend='both')  # 这里m是一个basemap实例

在cmap中提供了一些默认色带:

python matplotlib自定义colorbar颜色条及内置色条详解

python matplotlib自定义colorbar颜色条及内置色条详解

python matplotlib自定义colorbar颜色条及内置色条详解

python matplotlib自定义colorbar颜色条及内置色条详解

python matplotlib自定义colorbar颜色条及内置色条详解

python matplotlib自定义colorbar颜色条及内置色条详解

python matplotlib自定义colorbar颜色条及内置色条详解

总结 

来源:https://blog.csdn.net/liuchengzimozigreat/article/details/90477501

标签:matplotlib,colorbar,颜色条
0
投稿

猜你喜欢

  • 用Css来制作一个漂亮的多选列表框

    2008-05-29 12:45:00
  • SQL Server手工插入标识列的方法

    2024-01-27 05:41:35
  • MySQL和MongoDB设计实例对比

    2011-06-19 15:41:01
  • GO语言实现简单的目录复制功能

    2024-04-26 17:21:39
  • GoLang并发机制探究goroutine原理详细讲解

    2023-08-30 05:41:33
  • 表单设计中的网页视觉体验

    2008-06-26 13:35:00
  • 详解Python3 中hasattr()、getattr()、setattr()、delattr()函数及示例代码数

    2023-08-21 15:36:40
  • Python中defaultdict与lambda表达式用法实例小结

    2022-04-01 18:47:42
  • Golang中使用JSON的一些小技巧分享

    2024-04-27 15:33:34
  • Python标准库os常用函数和属性详解

    2022-05-17 21:40:03
  • Python数学建模学习模拟退火算法多变量函数优化示例解析

    2021-05-07 09:36:37
  • django将数组传递给前台模板的方法

    2023-09-26 09:06:40
  • WinHTTP Services 5.1 参考资料

    2010-03-27 20:49:00
  • Vue Element前端应用开发之整合ABP框架的前端登录

    2024-05-10 14:18:43
  • Python接口自动化浅析pymysql数据库操作流程

    2024-01-16 16:33:02
  • Python采集电影评论实战示例

    2022-02-25 22:14:37
  • 超大数据量存储常用数据库分表分库算法总结

    2024-01-28 01:44:38
  • Python实现给文件添加内容及得到文件信息的方法

    2022-01-04 09:22:20
  • 如何给 legend 标签设定宽度

    2008-07-26 12:18:00
  • Go语言依赖管理三要素示例解析

    2024-05-05 09:32:34
  • asp之家 网络编程 m.aspxhome.com