【问题标题】:Python Heatmaps (Basic and Complex)Python 热图(基本和复杂)
【发布时间】:2017-11-19 20:47:24
【问题描述】:

在 python (2.7) 中制作热图的最佳方法是什么?我找到了 heatmap.py 模块,我想知道人们是否对使用它有任何建议,或者是否有其他包做得很好。

我正在处理非常基本的数据,例如叠加在图像上的xy = np.random.rand(1000,2)

虽然我还想尝试另一件事,那就是制作一个缩放到不同热图的热图。例如,我有

attempts = np.random.rand(5000,2)
successes = np.random.rand(500,2)

我想要一个相对于尝试密度的成功热图。这可能吗?

【问题讨论】:

    标签: python matplotlib graphics heatmap bokeh


    【解决方案1】:

    Seaborn 是一个非常广泛使用的库,用于制作漂亮的绘图,并且有一个heatmap function。 Seaborn 在后台使用 matplotlib。

    import numpy as np
    import seaborn as sns
    
    xy = np.random.rand(1000,2)
    sns.heatmap(xy, yticklabels=100)
    

    关于你的第二个问题,我不确定你的意思。但我的建议是创建一个“相对于尝试密度的成功 [缩放]”的 numpy 数组或 pandas 数据框,但是您的意思是,然后将该缩放后的数组或数据框传递给 sns.heatmap

    【讨论】:

    • 我有所有观察的 x, y 数据和第 1 类观察的 x, y 数据。我想做第 1 类观察的热图,将点的热量缩放到总人口的热度。将第一个图表视为每个国家/地区的男性,而第二个图表是每个国家/地区的人均男性。
    • 我建议生成scaled_dataset 然后将其传递给sns.heatmap 是否有缺点?我认为这比尝试让热图函数为您动态缩放它更好的方法
    • 我会试试的,我只是确保你在我做之前就明白我在尝试什么,以防万一有不同的方法来做到这一点。
    【解决方案2】:

    您可以获得的最基本的热图是图像图:

    import matplotlib.pyplot as plt
    import numpy as np
    
    xy = np.random.rand(100,2)
    plt.imshow(xy, aspect="auto")
    plt.colorbar()
    
    plt.show()
    

    请注意,使用比像素更多的点来显示热图可能没有太大意义。

    当然也有不同的方法来绘制热图,你可以去matplotlib example gallery看看哪个情节最吸引你。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-10-29
      • 1970-01-01
      • 2012-05-25
      • 2017-08-14
      • 1970-01-01
      • 2011-07-16
      • 1970-01-01
      相关资源
      最近更新 更多