【问题标题】:2D Heat Map using matplot lib使用 matplotlib 的 2D 热图
【发布时间】:2014-07-31 20:17:37
【问题描述】:

我是 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_axis(在对数刻度上),我的颜色代表每个 grain_size 对应的丰度(所以 0.2 对应于 200,0.3 对应于 100 等等......)

所以我知道我需要标准化我的丰度数组以适应颜色条,但是然后呢?

非常感谢!

【问题讨论】:

    标签: python matplotlib


    【解决方案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()
    

    您可以通过选择另一个颜色图来更改颜色图,see here for some of them

    如果不是这样,如果你不明白,请告诉我。 希望这会有所帮助。

    【讨论】:

    • 没错!你可以给它加一个彩条吗?并改变颜色?并更改为 x_axis 为日志?
    • 非常感谢!伟大的! @jeanjrc 如何设置颜色条以引用丰度数组?
    • @Nimrodshn:你什么意思?
    • 意思是如果你查看颜色条,它显示的颜色从 0-100 到它应该显示 0.02-0.3,即使颜色本身像我想象的那样对应。意思是从粒度 1-50 颜色更蓝,而到 200 它们变得更红,然后是绿色,正如我从数据中想象的那样。
    • @Nimrodshn 那么你不希望它被标准化。所以只需将plt.matshow([...])中的[abundance]替换为[ab_norm]
    猜你喜欢
    • 2016-01-21
    • 2014-05-07
    • 1970-01-01
    • 2014-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多