在论坛上找了好久都没解决,最后发现了一种写法,亲测有效~
首先导入相关模块
import matplotlib.pyplot as plt
from matplotlib.ticker import FuncFormatter
from numpy.random import randn
from matplotlib.font_manager import FontProperties
这里FuncFormatter是一个类,初始化是以一个方法为参数
接下来定义将数值转化为百分号的方法
def to_percent(y,position):
return str(100*y)+"%"#这里可以用round()函数设置取几位小数
现在进入正题,画频率分布直方图
font=FontProperties(fname='/Library/Fonts/Songti.ttc')#这里设置字体,可以显示中文
x=randn(1000)
plt.hist(x,bins=30,weights=[1./len(x)]*len(x))#这里weights是每一个数据的权重,这里设置是1,weights是和x等维的列表或者series
fomatter=FuncFormatter(to_percent)
plt.gca().yaxis.set_major_formatter(fomatter)
plt.title("频率分布直方图",fontproperties=font)
plt.show()
代码运行结果如下
ok,如果想设置每根柱子的宽度可以使用rwidth的参数!!
参考文献:
1.http://sofasofa.io/forum_main_post.php?postid=1000816