【问题标题】:Generate a heatmap in Python with xyz dataframe使用 xyz 数据框在 Python 中生成热图
【发布时间】:2017-10-15 02:05:14
【问题描述】:

我将 x、y、z 数据存储在 pandas 数据框中,我想从中生成 2D 热图(深度图)。

df= pd.DataFrame(np.random.randint(0,100,size=(100, 3)), columns=list('XYZ'))

我不确定如何用 matplotlib 做到这一点。 This example 建议转换为 numpy 数组并创建轮廓图。有没有办法直接从 pandas 绘制?如果没有,我将如何将数据框重塑为 2d numpy 数组?

【问题讨论】:

    标签: python pandas matplotlib heatmap


    【解决方案1】:

    首先,数据帧是 numpy 数组。它们只是被扩展为具有许多其他不错的功能。所以这里不需要“转换”任何东西。

    其次,将随机值绘制为热图是行不通的。您要么需要有有意义的坐标,要么需要有有意义的 z 值。

    如果一切都是随机的,那么你唯一能做的,正式工作(但不会给出有意义的结果)的方法是使用 tripcolortricontourf 绘图。

    import matplotlib.pyplot as plt 
    import pandas as pd
    import numpy as np
    
    df= pd.DataFrame(np.random.randint(0,100,size=(100, 3)), columns=list('XYZ'))
    
    fig, (ax, ax2)=plt.subplots(ncols=2)
    ax.set_title("tripcolor")
    ax.tripcolor(df["X"], df["Y"], df["Z"])
    ax2.set_title("tricontour")
    ax2.tricontourf(df["X"], df["Y"], df["Z"])
    
    plt.show()
    

    【讨论】:

    • 谢谢 - 我的数据不是随机的,我只是生成随机数据来保存解释/导入真实数据。我的数据点与其邻居相关,因此我希望热图上有明显的“峰”和“谷”
    • 我的回答只能和问题一样好,不能超出问的范围。但您可以随时更新您的问题。
    • 这是一个非常好的答案,只是认为不用说我正在创建模仿我的结构的假数据。否则将是一个毫无意义的练习。
    • 我的意思是,这可能取决于实际数据,哪种解决方案是最好的。所以在这里我提出了随机数据的最佳(可能只有)解决方案。如果您的数据不是随机的,可能会有更好的解决方案 - 但我无法在不了解真实数据的情况下为您提供这些解决方案。
    猜你喜欢
    • 2014-05-17
    • 2020-02-13
    • 2020-06-27
    • 2011-01-23
    • 2015-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-10
    相关资源
    最近更新 更多