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

2024-05-19 12:04:33 发布

您现在位置:Python中文网/ 问答频道 /正文

这个问题源于this问题。基本上,我尝试使用matplotlib创建一个热图,坐标为x轴和y轴,值(如该位置上的频率)为热量。我有一个稀疏的字典data[x,y]=值,它位于存储信息的位置,这意味着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

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


Tags: 数据dfdata字典matplotlib情况标签this

热门问题