【问题标题】:Plotting seaborn heatmap from XYZ data saved as different sized numpy arrays从保存为不同大小的numpy数组的XYZ数据中绘制seaborn热图
【发布时间】:2020-10-01 09:40:16
【问题描述】:

我有来自某个实验的三个数组,如下所示

X : 形状为 19 X 1 的数组

Y : 形状为 350 X 1 的数组

Z : 形状为 350 X 19 的数组

如果我执行以下操作:

sns.heatmap(Z,cmap='jet', cbar=True);

地图正确,但 X 和 Y 轴刻度标签不正确。

知道如何在热图中包含所有三个(X、Y 和 Z)信息吗?

编辑:

说,

import numpy as np
import seaborn as sns

X = np.arange(5,190,10, dtype= int)
Y = np.arange(450,800,1)
Z = np.random.rand(350,19)



sns.heatmap(Z)

此表格不考虑绘制 Z 的 X 和 Y 值。我想要一种在相应的 X 和 Y 值处绘制 Z 值的方法。好像,Z = f(X,Y)。

【问题讨论】:

标签: python numpy seaborn data-visualization data-science


【解决方案1】:

直接创建 seaborn 热图会导致 yticklabels 过多,因为 seaborn 创建了分类记号。

sns.heatmap(Z, xticklabels=X, yticklabels=Y, square=False)

使用 matplotlib,您可以创建一个热图:

plt.imshow(Z, extent=[X[0] - 5, X[-1] + 5, Y[0] - 0.5, Y[-1] + 0.5], 
           aspect='auto', cmap='magma', interpolation='nearest')
plt.colorbar()

为了让 Seaborn 创建所需的热图,需要创建一个数据框,其中 X 作为列,Y 作为索引:

import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns
import pandas as pd

X = np.arange(5, 190, 10, dtype=int)
Y = np.arange(450, 800, 1)
Z = np.random.rand(350, 19)

df = pd.DataFrame(data=Z, columns=X, index=Y)
sns.heatmap(df, square=False)
plt.show()

请注意,对于大多数应用程序,“jet”颜色图是 strongly advised against

【讨论】:

    猜你喜欢
    • 2023-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-21
    • 1970-01-01
    • 1970-01-01
    • 2019-04-09
    相关资源
    最近更新 更多