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

使用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. 【协议】AAA Radius协议的常用报文分析

    写在前面的话 RADIUS:Remote Authentication Dial In User Service,远程用户拨号认证系统由RFC2865,RFC2866定义,是应用最广泛的AAA协议. ...

  2. spring cloud 知识总结

    ### 单体应用存在的问题 - 随着业务的发展,开发变得越来越复杂.- 修改.新增某个功能,需要对整个系统进行测试.重新部署.- 一个模块出现问题,很可能导致整个系统崩溃.- 多个开发团队同时对数据进 ...

  3. Spring中Resource(资源)的获取

    1.通过Resource接口获取资源 Resource接口的实现类有: Resource接口继承了InputStreamSource 接口,InputStreamSource 接口中有一个方法:get ...

  4. mzy,struts学习(二):struts.xml的配置

    <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "- ...

  5. Struts2之文件上传与下载

    时间:2017-1-11 15:47 --使用commons-fileupload组件上传1.客户端    *   method="post"    *   <input t ...

  6. docker搭建mysql集群

    目录 一.集群方案 二.安装PXC集群 三.Haproxy负载均衡 四.访问测试 五.节点宕机或重启 六.参考 一.集群方案 1.Replication 速度快,但仅能保证弱一致性,适用于保存价值不高 ...

  7. springboot邮通知553错误和

    com.sun.mail.smtp.SMTPSendFailedException: 553 Mail from must equal authorized user ; nested excepti ...

  8. tomcat配置启动不了

    关于ideatomcat配置问题 1.第一步配置tomcat启动器 2.配置启动的网址 3.配置启动器的启动 ---更多java学习,请见本人小博客:https://zhangjzm.gitee.io ...

  9. Selenium4 IDE初体验

    今天闲来无事,尝试了一番Selenium4的IDE,提供了录制和回放的功能.下面是对它的简单介绍. 安装 下载地址:https://www.selenium.dev/selenium-ide/ 在下载 ...

  10. Docker下制作一个容器镜像

    操作过程描述: (1)先基于centos的镜像启动一个centos容器 (2)在这个容器中安装nginx (3)然后把这个已经安装了nginx的容器制作成一个docker的镜像 操作:docker c ...