使用matplot lib制作2D热力图

3

我是新手,正在学习Python,请多关照:

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

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

你可以选择这里的其他调色板来更改调色板。
如果不是这个问题,或者有什么不理解的,请告诉我。 希望能对你有所帮助。

可以的!你能给它加上一个彩色条吗?并且改变颜色?将x轴改为对数轴? - Nimrodshn
非常感谢!太好了!@jeanjrc,我该如何设置颜色条以参考丰度数组? - Nimrodshn
@Nimrodshn 如果您不想将其规范化,那么只需在 plt.matshow([...]) 中用 [abundance] 替换 [ab_norm] 即可。 - jrjc
非常感谢!您知道如何使x轴对数化吗? - Nimrodshn
我也没有理解那个点,因为你的x轴上有离散值,而这些值不是对数。 - jrjc
显示剩余4条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接