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

使用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 模拟 10 考试总结

    T1 一道很妙的题,打暴力分也很多,但是考试的时候忘开 long long 了. 题解 T2 一道挺水的题,不过...(打挂了) 题解 T3 此题甚妙,转化真多,不过对思维是一个非常大的扩展 题解 考 ...

  2. DataTable 读取每一行的内容

    foreach (DataRow item in dataTable.Rows) { for (int i = 0; i < dataTable.Columns.Count; i++) { Co ...

  3. 使用VSCode创建第一个VUE项目

    vue init webpack vue_test回车,然后输入工程名称vue_test vue:Missing space before value for key 'components' 原因是 ...

  4. mzy对于枚举的理解

    关于enum,其实就是简化了的class,功能就是提供一个个独立的.特定含义的常量! 在JDK5.0之前我们想模拟enum的功能,只能使用自定义类的形式: 1.首先私有化构造方法,让外部不能new对象 ...

  5. 使用dom4j工具:xml总结

    1.IO流:BufferedReader字符流readLine();截取 不可行!!!2.XML解析:dom4j查:标签:element("name")elements(" ...

  6. 使用dom4j工具:获得文本内容(四)

    package dom4j_read; import java.io.File; import org.dom4j.Document; import org.dom4j.Element; import ...

  7. etcd raft 处理流程图系列3-wal的存储和运行

    存储和节点的创建 raftexample中的存储其实有两种,一个是通过raft.NewMemoryStorage()进行创建的raft.raftStorage,关联到单个raft节点,另一个是通过ne ...

  8. java.lang.NullPointerException at org.apache.jsp.index_jsp._jspInit(index_jsp.java:40)

    做JSP页面时,出现如下错误,把如上面依赖下面一个去除即可

  9. eclipse建立c语言工程以及成功下载到FPGA芯片过程遇到的各种问题以及解决方法详解

    推荐大家预先建立好一个工程目录文件夹,确实挺好用,参考正点原子的pdf教程,如下图所示, 我们eclipse在software文件夹建立一个workspace即可 选择用helloworld模板建立工 ...

  10. win+R 中的命令

    cmd------CMD命令提示符 MSConfig------系统配置实用程序 regedit------注册表编辑器 notepad------打开记事本 calc------启动计算器 msts ...