『Python』matplotlib的imshow用法
热力图是一种数据的图形化表示,具体而言,就是将二维数组中的元素用颜色表示。热力图之所以非常有用,是因为它能够从整体视角上展示数据,更确切的说是数值型数据。
使用imshow()函数可以非常容易地制作热力图。
1. 函数imshow()
imshow(X, cmap=None, norm=None, aspect=None,
interpolation=None, alpha=None, vmin=None, vmax=None,
origin=None, extent=None, shape=None, filternorm=1,
filterrad=4.0, imlim=None, resample=None, url=None, **kwargs)
主要用到的参数含义如下:
X
可以使类似数组的对象,或者是PIL类型图像,其中,数组对象可选shape为:(M, N)
单纯的二维数组,元素是标量数据,会通过colormap展示(M, N, 3)
RGB三通道图像,元素值可以是\(0-1\)之间的float或者\(0-255\)之间的int(M, N, 4)
RGBA图像,多出来的一维属性,比如是透明度,其元素值和3通道的一样,可以是\(0-1\)之间的float或者\(0-255\)之间的int
※
M代表rows,N代表colums※ 超过元素限定范围的元素值将被clipped
cmap
str或matplotlib.colors.Colormap类型,用于将标量数据映射到颜色的Colormap实例或已注册的Colormap名称。※ 只对二维数组有效,RGB(A)将自动忽略
norm
在使用cmap之前,用来将二维数组数据归一化到\([0, 1]\),默认是线性的,最小值对应\(0\),最大值对应\(1\)。这要注意,不然每次画图最大最小值不一样,色彩不好比较。
interpolation
插值方法,默认'nearest',可以支持的方法有:'none''nearest''bilinear''bicubic''spline16''spline36''hanning''hamming''hermite''kaiser''quadric''catrom''gaussian''bessel''mitchell''sinc''lanczos'
alpha
透明度,\(0\)表示透明,\(1\)表示不透明vmin,vmax
当输入的时二维数组标量数据并且没有明确的norm时,vmin和vmax定义colormap覆盖的数据范围,默认情况下,colormap覆盖所提供的值的完整范围数据当
norm给定时,这两个参数无效origin
坐标轴的样式,可选值为upper和lower,其对应坐标系样式如下图
※
M代表rows,N代表colums
2. 定制colorbars
2.1 基本连续colorbar绘制
import matplotlib.pyplot as plt
import matplotlib as mpl
fig, ax = plt.subplots(figsize=(6, 1))
fig.subplots_adjust(bottom=0.5)
cmap = mpl.cm.cool
norm = mpl.colors.Normalize(vmin=5, vmax=10)
fig.colorbar(mpl.cm.ScalarMappable(norm=norm, cmap=cmap),
cax=ax, orientation='horizontal', label='Some Units')

当然,也可以竖起来画
import matplotlib.pyplot as plt
import matplotlib as mpl
fig, ax = plt.subplots(figsize=(1, 6))
fig.subplots_adjust(right=0.5)
cmap = mpl.cm.cool
norm = mpl.colors.Normalize(vmin=5, vmax=10)
fig.colorbar(mpl.cm.ScalarMappable(norm=norm, cmap=cmap),
cax=ax, orientation='vertical', label='Some Units')

2.2 离散间隔colorbar
import matplotlib.pyplot as plt
import matplotlib as mpl
fig, ax = plt.subplots(figsize=(6, 1))
fig.subplots_adjust(bottom=0.5)
cmap = mpl.colors.ListedColormap(['red', 'green', 'black', 'blue', 'cyan'])
cmap.set_over('0.25')
cmap.set_under('0.75')
bounds = [1, 2, 4, 5, 7, 8]
norm = mpl.colors.BoundaryNorm(bounds, cmap.N)
fig.colorbar(
mpl.cm.ScalarMappable(cmap=cmap, norm=norm),
cax=ax,
boundaries=[0] + bounds + [13],
extend='both',
ticks=bounds,
spacing='proportional',
orientation='horizontal',
label='Discrete intervals, some other units',
)

2.3 带有自定义扩展名长度的colorbar
import matplotlib.pyplot as plt
import matplotlib as mpl
fig, ax = plt.subplots(figsize=(6, 1))
fig.subplots_adjust(bottom=0.5)
cmap = mpl.colors.ListedColormap(['royalblue', 'cyan',
'yellow', 'orange'])
cmap.set_over('red')
cmap.set_under('blue')
bounds = [-1.0, -0.5, 0.0, 0.5, 1.0]
norm = mpl.colors.BoundaryNorm(bounds, cmap.N)
fig.colorbar(
mpl.cm.ScalarMappable(cmap=cmap, norm=norm),
cax=ax,
boundaries=[-10] + bounds + [10],
extend='both',
extendfrac='auto',
ticks=bounds,
spacing='uniform',
orientation='horizontal',
label='Custom extension lengths, some other units',
)
plt.show()

3. 控制所有图的colorbar和图中元素对应颜色一致
import matplotlib as mpl
from matplotlib import pyplot as plt
fig, ax = plt.subplots(1, 1)
im = ax.imshow(data, interpolation="bicubic", vmin=vmin, vmax=vmax, cmap="jet")
fig.colorbar(im, ax=ax)
plt.show()
关键是要设置
vmin和vmax
『Python』matplotlib的imshow用法的更多相关文章
- 『Python』matplotlib实现GUI效果
1. 类RadioButtons的使用方法 类似单选框 import numpy as np import matplotlib.pyplot as plt import matplotlib as ...
- 『Python』matplotlib实现动画效果
一般而言,在绘制复杂动画时,主要借助模块animation来完成 import numpy as np import matplotlib.pyplot as plt import matplotli ...
- 『Python』matplotlib坐标轴应用
1. 设置坐标轴的位置和展示形式 import numpy as np import matplotlib.pyplot as plt import matplotlib as mpl mpl.use ...
- 『Python』matplotlib共享绘图区域坐标轴
1. 共享单一绘图区域的坐标轴 有时候,我们想将多张图形放在同一个绘图区域,不想在每个绘图区域只绘制一幅图形.这时候,就可以借助共享坐标轴的方法实现在一个绘图区域绘制多幅图形的目的. import n ...
- 『Python』matplotlib划分画布的主要函数
1. subplot() 绘制网格区域中几何形状相同的子区布局 函数签名有两种: subplot(numRows, numCols, plotNum) subplot(CRN) 都是整数,意思是将画布 ...
- 『Python』matplotlib常用图表
这里简要介绍几种统计图形的绘制方法,其他更多图形可以去matplotlib找examples魔改 1. 柱状图 柱状图主要是应用在定性数据的可视化场景中,或是离散数据类型的分布展示.例如,一个本科班级 ...
- 『Python』matplotlib常用函数
1. 绘制图表组成元素的主要函数 1.1 plot()--展现量的变化趋势 import numpy as np import matplotlib.pyplot as plt import matp ...
- 『Python』matplotlib初识
1. 核心原理 使用matplotlib绘图的原理,主要就是理解figure(画布).axes(坐标系).axis(坐标轴)三者之间的关系. 下面这幅图更详细: 以"美院学生张三写生画画&q ...
- python 利用matplotlib中imshow()函数绘图
matplotlib 是python最著名的2D绘图库,它提供了一整套和matlab相似的命令API,十分适合交互式地进行制图.而且也可以方便地将它作为绘图控件,嵌入GUI应用程序中.通过简单的绘图语 ...
随机推荐
- SQL 练习30
查询所有学生的课程及分数情况(存在学生没成绩,没选课的情况) SELECT Student.*,CId,score from Student LEFT JOIN SC ON Student.SId = ...
- GIT-版本管理-初阶使用
目前我用的比较多的git指令 git clone -b [branch-name]: 拉取远程指定分支代码 git status: 查看工作区修改状态 在将修改添加进暂存区的时候需要git add . ...
- NOIP 模拟 $25\; \rm queen$
题解 \(by\;zj\varphi\) 这是一道纯分类讨论,然后推式子的题,细节挺多,挺麻烦,但是很考验数学能力 不讲了,官方题解给的很清楚 Code: %: pragma GCC optimize ...
- 分布式文件系统FastDFS搭建实操
转载---------佳先森--- 一.什么是文件系统 分布式文件系统(Distributed File System)是指文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与节 ...
- jQuery中获取属性值:attr()、html()、text()、val()等(一)
<!DOCTYPE html> <html> <head> <title>01_basic.html</title> <meta na ...
- JDBC中级篇(MYSQL)——在JDBC中如何获得表中的,自增长的字段值
注意:其中的JdbcUtil是我自定义的连接工具类:代码例子链接: package c_increment; import java.sql.Connection; import java.sql.P ...
- cs_play
# -*-coding:utf-8-*-__author__ = "logan.xu"###构造函数#class Role:# n = 123# # 类变量 比如 n = 123# ...
- C# 实现图片上传
C# 实现图片上传 C#实现图片上传: 通过页面form表单提交数据到动作方法,动作方法实现保存图片到指定路径,并修改其文件名为时间格式 页面设置 这里使用的模板MVC自带的模板视图 <h2&g ...
- 移动端ios上下滑动翻页事件失效
移动端开发过程中,在添加上下滑动事件时候,引入了最常用的移动端库zepto.js及其touch模块,有一种现象,安卓的手机没有问题,上下滑动翻页很正常 :但是到了ios上面,好啊,上下滑动会出现弹性滚 ...
- Lucene入门及实际项目应用场景
导入maven依赖 <dependency> <groupId>org.apache.lucene</groupId> <artifactId>luce ...