python y轴显示百分比_以y轴为百分比绘制直方图(使用FuncFormatter?)

本文介绍如何在Python中使用matplotlib库绘制直方图时,将y轴显示为数据出现的百分比,而非次数。通过设置FuncFormatter并自定义转换函数to_percent,实现了将每个bin的计数转换为相对于总数据量的百分比。在代码示例中,作者遇到了如何将百分比计算与Formatter函数结合的问题,并分享了最终解决方案。
摘要由CSDN通过智能技术生成

我有一个数字在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'

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值