使用{tuple:float}格式的dict在python matplotlib中创建带有不连续x和y标签的热图

时间:2019-07-08 09:19:20

标签: python dictionary heatmap

此问题源于this问题。基本上,我尝试使用matplotlib以坐标为x和y轴以及值(例如该位置的频率)作为热量来创建热图。我有一个稀疏的字典data [x,y] = value_on_that_position来存储信息,这意味着x-y标签不是连续的。

所以我尝试了用代码解决该问题的方法

import pandas as pd
ser = pd.Series(list(data.values()), index=pd.MultiIndex.from_tuples(data.keys()))
df = ser.unstack().fillna(0)
df.shape

它很好用,除非缺少标签。例如,它可能会绘制如下内容:

   1    3    4    5
6  50   51   34   76
7  12   10   23   23
9  23   0    70   75
10 10   12   13   40

由于问题中的x和y标签代表坐标,我需要它们是完整且连续的,我希望x标签和y标签可以像[1 2 3 4 5]和[6 7 8 9 10],则在这些不存在的坐标中自动填充值为0。

我知道我可以通过简单地在数据集中添加一些点来实现此目标,例如,在这种情况下添加data [2,8] = 0,ser.unstack().fillna(0)就可以完成任务。但是我不想过多地使用字典,因为它已经足够大了(这就是为什么我将数据存储在稀疏字典中而不是密集字典中的原因)。有什么更好的方法吗?熊猫数据框提供的功能可以轻松实现吗?

0 个答案:

没有答案