首页 > 解决方案 > 绘制排序词频的条形图

问题描述

我的字典是这样的:

{'come': 101, 'con': 101, 'si': 101, 'ha': 104, 'una': 107, 
 'quindi': 114, 'le': 119, 'poi': 128, 'io': 129, 'per': 147, 
 'sono': 155, 'in': 175, 'ho': 179, 'il': 200, 'mi': 245, 
 'la': 247, 'non': 265, 'un': 270, 'di': 310, 'che': 377}

我想绘制一个条形图,显示每个单词按其值排序(按升序排列)。我该怎么做?我尝试自己对字典进行排序然后绘图,但是图中的条形图未排序

标签: pythonmatplotlib

解决方案


如果你考虑额外的包,让我们试试pandas

import pandas as pd
pd.Series(d).sort_values(ascending=False).plot.bar()

输出:

在此处输入图像描述

如果 Pandas 不是一个选项,您可以使用 Python 方法:

# sort the dictionary by values, return a list of pairs
sorted_vals = sorted(d.items(), key=lambda x: (-x[1],x[0]))

plt.bar([x[0] for x in sorted_vals], [x[1] for x in sorted_vals])

并得到几乎相同的情节。


推荐阅读