Matplotlib绘制不从原点开始,划分间隔可变的热力图(heatmap)

前言

我有一个功能需要将一张热力图覆盖在图像上,但是图像的原点以及x轴的刻度是特定的。因此我需要对热力图生成的位置进行调整,而一般热力图是直接给一个2D的数组直接以(0,0)为起点扩散的,因此需要进行一些改动。

方法

原来随机生成的热力图代码

import numpy as np
import matplotlib.pyplot as plt

a = np.random.random((16, 16))
plt.imshow(a, cmap='hot', interpolation='nearest')
plt.show()

热力图的样子如下,可以看到是从左上角为基准的:
Matplotlib绘制不从原点开始,划分间隔可变的热力图(heatmap)_第1张图片

那我们如何把热力图移动呢?这就需要利用extent这个参数,修改代码

import numpy as np
import matplotlib.pyplot as plt

extent = [10, 11, 2, 5]

a = np.random.random((16, 16))
plt.imshow(a, cmap='hot', extent=extent, interpolation='nearest')
plt.show()

可以看到修改后图片的起点,以及显示的宽度都发生了变化,这就是我们所需要的效果,如果要增加一个方块的宽度,只需要对输入矩阵shape进行调整即可。
Matplotlib绘制不从原点开始,划分间隔可变的热力图(heatmap)_第2张图片
将输入改为4*4,就可以看到变化
Matplotlib绘制不从原点开始,划分间隔可变的热力图(heatmap)_第3张图片

参考链接

  1. https://stackoverflow.com/questions/2369492/generate-a-heatmap-in-matplotlib-using-a-scatter-data-set

你可能感兴趣的:(python)