使用matplotlib绘制2D热图

3 投票
1 回答
536 浏览
提问于 2025-04-18 15:29

我刚开始学习Python,请多多包涵:

我一直在尝试绘制一个二维热图,类似于这里展示的:

http://mips.helmholtz-muenchen.de/plant/static/images/A_thal_LTRs.png

我使用了contourf或colorbar类,但似乎总是无法成功。

我用的是两个非常简单的数据集,如代码所示:

import numpy as np
import matplotlib.pyplot as plt

abundance = [0.2,0.3,0.25,0.05,0.05,0.04,0.06]

grain_size = [200,100,70,50,10,5,1]

我希望grain_size数组作为我的x轴(使用对数刻度),而颜色则表示与每个grain_size对应的丰度(比如0.2对应200,0.3对应100等等……)

所以我知道我需要将丰度数组进行归一化,以适应颜色条,但接下来该怎么做呢?

非常感谢!

1 个回答

1

这就是你想要的吗?

import matplotlib.cm as cm

ab = np.array(abundance)
gs = np.array(grain_size)
ab_norm = ab/ab.max()*100
plt.matshow([ab_norm], cmap=cm.gist_rainbow_r) 
plt.xticks(range(7), gs)
plt.yticks(range(1), ["abundance"])
plt.colorbar()
plt.show()

ab

你可以通过选择其他的颜色映射来改变颜色,这里有一些例子可以看看

如果这不是你想要的,或者你有不明白的地方,告诉我哦。希望这能帮到你。

撰写回答