【问题标题】:Generating a heatmap from a hdf file从 hdf 文件生成热图
【发布时间】:2020-11-04 18:03:27
【问题描述】:

我想从 hdf5 文件中生成热图,其中强度是二维矩阵,x_range 和 z_range 是轴的范围。

import h5py
import numpy as np
import pandas as pd
import seaborn as sb
import matplotlib as plt

#Data Aquisition
file = h5py.File('scan.h5', 'r')

intensity = file.get('intensity')
intensity = np.array(intensity)

x_range = file.get('x range')
x_range = np.array(x_range)

z_range = file.get('z range')
z_range = np.array(z_range)

现在我尝试通过以下方式使用 pandas 创建数据透视表:

#Pivot Table
df = pd.DataFrame({'intensity': intensity, 'x_range': x_range, 'z_range': z_range})
result= df.pivot(index= 'z_range', columns= 'x_range', values= 'intensity')

这里出现的问题是强度必须是一维的,而强度是一个矩阵。 绘图由以下人员完成:

#Ploting
heat_map = sb.heatmap(result, cmap="Spectral_r", cbar_kws={'label': 'Countrate [arb. units]'})
plt.xlabel("x direction [µm]")
plt.ylabel("z direction [µm]")
plt.show()

此外,我希望原点位于热图的左下角。

【问题讨论】:

    标签: pandas numpy seaborn heatmap hdf5


    【解决方案1】:

    您可以尝试像这样使用数据框来绘制它:

    from matplotlib import pyplot as plt
    import seaborn as sns
    sns.heatmap(df)
    plt.show()
    

    【讨论】:

    • 并且通过heat_map = sb.heatmap(intensity, yticklabels= z_range, xticklabels= x_range , cmap="Spectral_r", cbar_kws={'label': 'Countrate [arb. units]'}) 可以添加轴的范围以使用来自hdf5文件的数据。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-19
    • 2011-10-23
    • 2014-10-08
    • 1970-01-01
    • 2020-02-13
    • 1970-01-01
    相关资源
    最近更新 更多