热力图是一种数据的图形化表示,具体而言,就是将二维数组中的元素用颜色表示。热力图之所以非常有用,是因为它能够从整体视角上展示数据,更确切的说是数值型数据。

使用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代表rowsN代表colums

    超过元素限定范围的元素值将被clipped

  • cmap

    strmatplotlib.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时,vminvmax定义colormap覆盖的数据范围,默认情况下,colormap覆盖所提供的值的完整范围数据

    norm给定时,这两个参数无效

  • origin

    坐标轴的样式,可选值为upperlower,其对应坐标系样式如下图

    M代表rowsN代表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()

关键是要设置vminvmax

『Python』matplotlib的imshow用法的更多相关文章

  1. 『Python』matplotlib实现GUI效果

    1. 类RadioButtons的使用方法 类似单选框 import numpy as np import matplotlib.pyplot as plt import matplotlib as ...

  2. 『Python』matplotlib实现动画效果

    一般而言,在绘制复杂动画时,主要借助模块animation来完成 import numpy as np import matplotlib.pyplot as plt import matplotli ...

  3. 『Python』matplotlib坐标轴应用

    1. 设置坐标轴的位置和展示形式 import numpy as np import matplotlib.pyplot as plt import matplotlib as mpl mpl.use ...

  4. 『Python』matplotlib共享绘图区域坐标轴

    1. 共享单一绘图区域的坐标轴 有时候,我们想将多张图形放在同一个绘图区域,不想在每个绘图区域只绘制一幅图形.这时候,就可以借助共享坐标轴的方法实现在一个绘图区域绘制多幅图形的目的. import n ...

  5. 『Python』matplotlib划分画布的主要函数

    1. subplot() 绘制网格区域中几何形状相同的子区布局 函数签名有两种: subplot(numRows, numCols, plotNum) subplot(CRN) 都是整数,意思是将画布 ...

  6. 『Python』matplotlib常用图表

    这里简要介绍几种统计图形的绘制方法,其他更多图形可以去matplotlib找examples魔改 1. 柱状图 柱状图主要是应用在定性数据的可视化场景中,或是离散数据类型的分布展示.例如,一个本科班级 ...

  7. 『Python』matplotlib常用函数

    1. 绘制图表组成元素的主要函数 1.1 plot()--展现量的变化趋势 import numpy as np import matplotlib.pyplot as plt import matp ...

  8. 『Python』matplotlib初识

    1. 核心原理 使用matplotlib绘图的原理,主要就是理解figure(画布).axes(坐标系).axis(坐标轴)三者之间的关系. 下面这幅图更详细: 以"美院学生张三写生画画&q ...

  9. python 利用matplotlib中imshow()函数绘图

    matplotlib 是python最著名的2D绘图库,它提供了一整套和matlab相似的命令API,十分适合交互式地进行制图.而且也可以方便地将它作为绘图控件,嵌入GUI应用程序中.通过简单的绘图语 ...

随机推荐

  1. NOIP 模拟 $16\; \rm Star Way To Heaven$

    题解 \(by\;zj\varphi\) 看懂题!!! 从最左穿到最右,一定会经过两个星星之间或星星和边界之间,那么我们穿过时当前最优一定是走中点 而我们要求最小的距离最大,那么我们将所有星星和边界( ...

  2. 上传jar包到nexus

    注释掉: org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.meeno.boot.oa.OaAutoConfigur ...

  3. windows笔记-在可执行文件或DLL的多个实例之间共享静态数据

    全局数据和静态数据不能被同一个. exe或DLL文件的多个映像共享,这是个安全的默认设置.但是,在某些情况下,让一个. exe文件的多个映像共享一个变量的实例是非常有用和方便的. 每个. exe或DL ...

  4. 剑指offer面试题4

    1 #include<iostream> 2 using namespace std; 3 4 void replace(char ch[]) { 5 int count = 0; 6 i ...

  5. 编辑器扩展 --- 自动化处理之AssetPostprocessor资源导入

    AssetPostprocessor资源导入管线 AssetPostprocessor用于在资源导入时自动做一些设置,比如当导入大量图片时,自动设置图片的类型,大小等.AssetPostprocess ...

  6. 阿里云服务器部署mongodb

    在阿里云上买了个服务器,部署mongodb遇到一些坑,解决办法也是从网上搜集而来,把零零碎碎的整理记录一下. 服务器是:Alibaba Cloud Linux 下载安装 mongodb官网下载实在是太 ...

  7. 性能测试工具JMeter 基础(四)—— 录制脚本

    对于JMeter中HTTP请求除了手动添加以为还可以进行脚本录制,有两个方法: 使用badboy录制,录制完成后,将录制的文件导入JMeter中 使用JMeter自带的录制原件进行录制(HTTP(S) ...

  8. Geode member发现机制

    Geode member发现机制 Apache Geode 为集群和客户端服务器间提供了多种member 发现机制,具体如下: Peer Member Discovery Standalone Mem ...

  9. python打包发布自己的pip项目

    原文链接:https://blog.csdn.net/Liangjun_Feng/article/details/80037315 一.注册pypi账号 网址:https://pypi.org/ 直接 ...

  10. jvm学习笔记:栈帧

    栈帧内的数据结构 局部变量表(Local Variables):记录非静态方法的this指针.方法参数.局部变量 操作数栈(Operand Stack):用于计算的栈结构 动态链接(Dynamic L ...