首页 > 解决方案 > 使用字典绘制直方图的最有效方法?

问题描述

我正在分析 python 中的国际象棋游戏,并试图生成每局棋步数的直方图。目标是获得类似于此可视化的内容,其中似乎平均每场比赛有 70 步:

移动直方图

目前我有一个无序的dict

{'106': 38,
 '100': 46,
 '65': 58,
 '57': 47,
 '54': 31,
 '112': 29,
 '93': 35,
 '91': 44,
 ...
 '109': 35,
 '51': 26}

其中键表示移动次数,值表示游戏次数

我发现提取用于绘制直方图的字典数据非常困难。我尝试提取到数据框,但无法以 matplotlib/seaborn 可读格式获取它。

标签: pythonmatplotlibseaborndata-visualizationchess

解决方案


首先,我们将使用字典理解对您的字典进行排序:

d = {'106': 38,
 '100': 46,
 '65': 58,
 '57': 47,
 '54': 31,
 '112': 29,
 '93': 35,
 '91': 44,
 '109': 35,
 '51': 26}

sorted_d = {key:d[key] for key in sorted(d, key = lambda x: int(x))}

现在我们用 barplot 显示它:

import seaborn as sns
sns.barplot(x=list(sorted_d .keys()), y = list(d.sorted_d ()))

这是你得到的结果:

正确的图像

如果你不对字典进行排序,你会得到这个:

在此处输入图像描述


推荐阅读