gpt4 book ai didi

python - 绘制热图时对数据进行排序

转载 作者:行者123 更新时间:2023-12-01 05:24:35 25 4
gpt4 key购买 nike

我一直在尝试绘制一个热图,其中 x 轴为时间跨度(以 5 分钟为增量),y 轴为在互联网上观看过的某个视频。

一切都很顺利,数据也很好。例如,数据集可能如下所示:

[[0.5, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
[0.5, 0.0, 0.0, 1.5, 0.0, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]]

这意味着有两行和 22 列 (0:00:00 - 1:45:00)。

我正在使用此代码来绘制热图:

def printheatmap(title,names,data):
data = np.array(data)
fig, ax = plt.subplots()
fig = plt.gcf()
fig.set_size_inches(8, 11)
heatmap = ax.pcolormesh(data, cmap=plt.cm.Blues, edgecolors='black')
ax.set_title(title)
ax.set_xticks(np.arange(data.shape[1])+0.5, minor=False)
ax.set_yticks(np.arange(data.shape[0])+0.5, minor=False)
ax.xaxis.tick_bottom()
ax.set_xticklabels(times, minor=False, weight='ultralight', rotation=40, ha='right')
ax.set_yticklabels(names, minor=False)
ax.grid(False)
plt.colorbar(heatmap)
plt.show()

但由于某种原因,第二行首先在热图中绘制:

enter image description here

如您所见,以 (0.5;0;0;1.5) 开头的标签位于图表顶部,并具有正确的标签。有什么方法可以“保留”我手动进行的排序吗?

y 轴未反转。对于更大的数据集,绘图似乎是完全随机的(但是,显然,最高分位于底部),而最后一行应该是:

[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0].

enter image description here

这是另一张照片。我按日期对数据集进行排序,但它只是将其打乱:

enter image description here

编辑:已修复。显然,使用自定义 XPath 函数对数据进行排序并不能很好地与 matplotlib 配合使用。手动排序似乎可以解决问题。

最佳答案

使用列表切片来反转数据:

data = np.array(data[::-1])

或反转 Y 轴:

ax.invert_yaxis()

关于python - 绘制热图时对数据进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21658865/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com