从列表列表中绘制热图
Plot heatmap from list of lists
有一个包含变量列表(不同大小)的列表:
res = [[0.01, 0.9, 0.46], [0.64, 0.24], [0.87, 0.99, 0.47, 0.75], ...]
(请注意,实际列表每个包含约 3000 个变量)
让我们说:
x = [0, 1, 2, ...]
有没有办法用 res 的值在 y 轴上制作热图?
例如,这是其中一个列表的热图:
我只想对每个列表都这样做,并将它们都放在同一个热图上
为了绘制热图,您可能需要将数据插入到常规网格中。以下 使用 scipy.interpolate.interp2d
实现此目的
完成此操作后,您可以使用 seaborn.heatmap 绘制热图:
import seaborn as sns
res = [[0.01, 0.9, 0.46], [0.64, 0.24, 1], [0.87, 0.99, 0.47]]
ax = sns.heatmap(res)
我通过执行以下操作找到了解决方法:
y_ax = []
cpt = 0
for elem in res:
y_ax.append([cpt]*len(elem))
cpt += 1
res_flat = sum(res, [])
y_flat = sum(y_ax, [])
有一个包含变量列表(不同大小)的列表:
res = [[0.01, 0.9, 0.46], [0.64, 0.24], [0.87, 0.99, 0.47, 0.75], ...]
(请注意,实际列表每个包含约 3000 个变量)
让我们说:
x = [0, 1, 2, ...]
有没有办法用 res 的值在 y 轴上制作热图?
例如,这是其中一个列表的热图:
我只想对每个列表都这样做,并将它们都放在同一个热图上
为了绘制热图,您可能需要将数据插入到常规网格中。以下 scipy.interpolate.interp2d
完成此操作后,您可以使用 seaborn.heatmap 绘制热图:
import seaborn as sns
res = [[0.01, 0.9, 0.46], [0.64, 0.24, 1], [0.87, 0.99, 0.47]]
ax = sns.heatmap(res)
我通过执行以下操作找到了解决方法:
y_ax = []
cpt = 0
for elem in res:
y_ax.append([cpt]*len(elem))
cpt += 1
res_flat = sum(res, [])
y_flat = sum(y_ax, [])