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

目录
  • 自定义colorbar(draw colorbar without any mapple/plot)
  • contourf函数
  • 为所有子图添加一个色带
  • 推荐色带与自定义色带
  • 总结

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颜色条及内置色条的文章就介绍到这了,更多相关matplotlib自定义colorbar颜色条内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • matplotlib 多个图像共用一个colorbar的实现示例

    本文主要介绍了matplotlib 多个图像共用一个colorbar的实现示例,分享给大家,具体如下: # -*- coding: utf-8 -*- """ Created on Sat Sep 5 18:05:11 2020 @author: 15025 draw three figures with one common colorbar """ import numpy as np import matplotlib.pyplot as

  • python可视化 matplotlib画图使用colorbar工具自定义颜色

    python matplotlib画图使用colorbar工具自定义颜色 colorbar(draw colorbar without any mapple/plot) 自定义colorbar可以画出任何自己想要的colorbar,自由自在.不受约束,不依赖于任何已有的图(plot/mappable).这里使用的是mpl.colorbar.ColorbarBase类,而colorbar类必须依赖于已有的图. 参数可以参考下面的描述->matplotlib: class matplotlib.co

  • python中matplotlib的颜色以及形状实例详解

    目录 绘制折线图 绘制柱形图 簇状柱形图 堆积柱形图 散点图 附:matplotlib实现区域颜色填充 总结 绘制折线图 命令形如: # 常用 plt.plot(x, y, linewidth = '1', label = "test", color=' red ', linestyle=':', marker='|') # 所有可选参数 plt.plot(x,y,color,linestyle=,linewidth,marker,markeredgecolor,markeredgwi

  • 如何使用Python修改matplotlib.pyplot.colorbar的位置以对齐主图

    目录 问题描述 方法 0. plt.colorbar参数介绍 1. plt.colorbar(im, fraction=0.046, pad=0.04, shrink=1.0) 2. make_axes_locatable 3. make_axes_locatables 升级版 4. 手动给colorbar添加一个axe 总结 问题描述 像这样的图,我想把右边的colorbar设置成和主图一样高度 方法 0. plt.colorbar参数介绍 https://matplotlib.org/sta

  • python matplotlib:plt.scatter() 大小和颜色参数详解

    语法 plt.scatter(x, y, s=20, c='b') 大小s默认为20,s=0时点不显示:颜色c默认为蓝色. 为每一个点指定大小和颜色 有时我们需要为每一个点指定大小和方向,以区分不同的点.这时,可以向s和c传入列表.如: import matplotlib.pyplot as plt import numpy as np x = list(range(1, 7)) plt.scatter(x, x, s=10*np.array(x)**2, c=x) plt.show() 参数s

  • 对matplotlib改变colorbar位置和方向的方法详解

    如下所示: #! usr/bin/python #coding=utf-8 import numpy as np import matplotlib.pyplot as plt data=np.random.rand(10,10) fig, ax=plt.subplots() data[data==-1]=np.nan#去掉缺省值-1 im =ax.imshow(data,interpolation='none',cmap='Reds_r',vmin=0.6,vmax=.9)#不插值 #去掉边框

  • Python+matplotlib绘制不同大小和颜色散点图实例

     具有不同标记颜色和大小的散点图演示. 演示结果: 实现代码: import numpy as np import matplotlib.pyplot as plt import matplotlib.cbook as cbook # Load a numpy record array from yahoo csv data with fields date, open, close, # volume, adj_close from the mpl-data/example directory

  • matplotlib实现热成像图colorbar和极坐标图的方法

    热成像图 %matplotlib inline from matplotlib import pyplot as plt import numpy as np def f(x, y): return (1 - x / 2 + x ** 5 + y ** 3) * np.exp(-x ** 2 - y ** 2) n = 10 x = np.linspace(-3, 3, 4 * n) y = np.linspace(-3, 3, 3 * n) X, Y = np.meshgrid(x, y) p

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

    目录 自定义colorbar(draw colorbar without any mapple/plot) contourf函数 为所有子图添加一个色带 推荐色带与自定义色带 总结 PS: 传送门——自定义Colorbars教程 自定义colorbar(draw colorbar without any mapple/plot) 参考:Customized Colorbars Tutorial    api example code: colorbar_only.py 自定义colorbar可以

  • python字符串string的内置方法实例详解

    下面给大家分享python 字符串string的内置方法,具体内容详情如下所示: #__author: "Pizer Wang" #__date: 2018/1/28 a = "Let's go" print(a) print("-------------------") a = 'Let\'s go' print(a) print("-------------------") print("hello"

  • 对Python中内置异常层次结构详解

    如下所示: BaseException +-- SystemExit +-- KeyboardInterrupt +-- GeneratorExit +-- Exception +-- StopIteration +-- StandardError | +-- BufferError | +-- ArithmeticError | | +-- FloatingPointError | | +-- OverflowError | | +-- ZeroDivisionError | +-- Asse

  • 六个Python编程最受用的内置函数使用详解

    目录 1. Map 函数 2. Lamdba 函数 3. Enumerate 函数 4. Reduce 函数 5. Filter 函数 6. Zip 函数 在日常的python编程中使用这几个函数来简化我们的编程工作,经常使用能使编程效率大大地提高. 1. Map 函数 map函数可以使用另外一个函数转换整个可迭代对象的函数,包括将字符串转换为数字.数字的四舍五入等等. 之所以使用map函数来完成这些事情可以节约内存,使代码的运行速度提高,并且使用的代码量比较少. 比如这里需要将一个字符串的数组

  • asp 内置对象 Application 详解

    asp内置对象 Application 详解  在 ASP 的内建对象中除了用于发送.接收和处理数据的对象外,还有一些非常实用的代表 Active Server 应用程序和单个用户信息的对象.  让我们先来看看 Application 对象.在同一虚拟目录及其子目录下的所有 .asp 文件构成了 ASP 应用程序.我们非但可以使用 Application 对象,在给定的应用程序的所有用户之间共享信息,并在服务器运行期间持久的保存数据.而且,Application 对象还有控制访问应用层数据的方法

  • Java多线程之显示锁和内置锁总结详解

    总结多线程之显示锁和内置锁 Java中具有通过Synchronized实现的内置锁,和ReentrantLock实现的显示锁,这两种锁各有各的好处,算是互有补充,这篇文章就是做一个总结. *Synchronized* 内置锁获得锁和释放锁是隐式的,进入synchronized修饰的代码就获得锁,走出相应的代码就释放锁. synchronized(list){ //获得锁 list.append(); list.count(); }//释放锁 通信 与Synchronized配套使用的通信方法通常

  • Java 数组内置函数toArray详解

    java.util.List中的toArray函数 java.util.List<E> @NotNull public abstract <T> T[] toArray(@NotNull T[] a) Returns an array containing all of the elements in this list in proper sequence (from first to last element); the runtime type of the returned

  • Python List列表对象内置方法实例详解

    本文实例讲述了Python List列表对象内置方法.分享给大家供大家参考,具体如下: 前言 在上一篇中介绍了Python的序列和String类型的内置方法,本篇继续学习作为序列类型成员之一的List类型的内置方法. 软件环境 系统 UbuntuKylin 14.04 软件 Python 2.7.3 IPython 4.0.0 列表List 列表是一种容器,存放内存对象的引用.即是任意内存对象的有序集合,不同的类型对象可以存放在同一个列表中.通过索引来访问其中的元素.可以任意的嵌套.伸长.异构.

  • Python内置函数dir详解

    1.命令介绍 最近学习并使用了一个python的内置函数dir,首先help一下: 复制代码 代码如下: >>> help(dir) Help on built-in function dir in module __builtin__: dir()     dir([object]) -> list of strings Return an alphabetized list of names comprising (some of) the attributes     of

  • python 内置函数汇总详解

    1.强制类型转换 dict() 强制转换为字典类型 list() 强制转换为列表类型 tuple() 强制转换为元组类型 int() 强制转为整形 str() 强制转换为字符串类型 bool() 强制转换为布尔类型 set() 强制转换为集合类型 2.输入输出 print() 输出 input() 输入 3.数学相关 abs() 绝对值 qqq = abs(-253) print(qqq) float() 转换成浮点型 v = 55 v1 = float(v) print(v1) max() 找

随机推荐