我有一个数字在1000到20000之间的数据列表。data = [1000, 1000, 5000, 3000, 4000, 16000, 2000]
当我使用hist()函数绘制直方图时,y轴表示一个bin中值的出现次数。我想要的是出现的百分比,而不是出现的次数。
上述绘图代码:f, ax = plt.subplots(1, 1, figsize=(10,5))
ax.hist(data, bins = len(list(set(data))))
我一直在看这个post,它描述了一个使用FuncFormatter的示例,但是我不知道如何使它适应我的问题。欢迎提供帮助和指导:)
编辑:主要问题是FuncFormatter使用的to_percent(y, position)函数。y对应于y轴上的一个给定值。我需要用这个值除以元素总数,显然我不能传递给函数。。。
编辑2:由于使用全局变量,我不喜欢当前的解决方案:def to_percent(y, position):
# Ignore the passed in position. This has the effect of scaling the default
# tick locations.
global n
s = str(round(100 * y / n, 3))
print (y)
# The percent symbol needs escaping in latex
if matplotlib.rcParams['text.usetex'] is True:
return s + r'