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

使用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用法的更多相关文章

  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. 数据结构与算法-排序(九)基数排序(Radix Sort)

    摘要 基数排序是进行整数序列的排序,它是将整数从个位开始,直到最大数的最后一位截止,每一个进位(比如个位.十位.百位)的数进行排序比较. 每个进位做的排序比较是用计数排序的方式处理,所以基数排序离不开 ...

  2. 接入华为应用内支付,验证购买Token接口,返回“rights invalid”

    有海外开发者向我们提问:我在应用中集成了华为应用内支付SDK(测试购买订阅型商品),按照文档说明,在服务器去请求验证购买Token接口的时候返回了{"responseCode":& ...

  3. zoolkeeper 的Curator的分布式锁

    RetryPolicy retryPolicy = new ExponentialBackoffRetry(1000, 3) CuratorFramework client = CuratorFram ...

  4. C++基于ATL工程编写ActiveX控件步骤

    参考网址: https://blog.csdn.net/whui19890911/article/details/8896554 开发环境:VS2010 开发工程:C++ATL项目 开发目的:创建Ac ...

  5. C#多线程详解(二)

    在上一节介绍了线程的基础知识,下面来研究多线程的优先级 using System; using System.Threading;namespace Test{    class TestThread ...

  6. WPF简易聊天室

    一.聊天界面如下

  7. SpringMVC之@ControllerAdvice

    @ControllerAdvice ,很多初学者可能都没有听说过这个注解,实际上,这是一个非常有用的注解,顾名思义,这是一个增强的 Controller.使用这个 Controller ,可以实现三个 ...

  8. 【GIS】点图层符号的方向和大小

    方向:根据属性字段设置点图层中每个要素的符号方向和大小, 1 所有要素使用同一种符号---简单渲染 在图层属性---符号系统---单一符号中进行设置,首先设置符号,在后面的[高级]选项按钮中分别设置[ ...

  9. php检测数组长度的函数sizeof count

    php教程检测数组长度的函数sizeof count在php检测数组长度的函数有sizeof  count 下面看个简单实例*/$colorlist = array("apple" ...

  10. ks.cfg文件相关

    原文转自:https://www.cnblogs.com/itzgr/p/10029631.html作者:木二 目录 一 图形化生成ks.cfg文件 二 ks.cfg文件相关项解析 一 图形化生成ks ...