马克一下
'''
编写人: suhe
日期: 2019/2/10
功能: 根据所得到的四个分类‘娱乐、购物、学习、其它’下
分别包含的网站数,num1,num2,num3,num4,画出饼状图并在图上标示所占的百分比
ps:https://www.zhihu.com/question/25404709/answer/309784195 汉字无法正确显示的方法
'''
###正常显示中文
import matplotlib.pyplot as plot
#plot.rcParams['font.sas-serig']=['SimHei'] #用来正常显示中文标签
#plot.rcParams['axes.unicode_minus']=False #用来正常显示负号
##############
####主要功能片段
#假设得到四个分类下分别具有的网站数,num1,num2,num3,num4
num1,num2,num3,num4=13,8,23,3
sum=num1+num2+num3+num4 #表示网址数总和
rat1,rat2,rat3,rat4=num1/sum,num2/sum,num3/sum,num4/sum #代表百分比
plot.title(u"用户行为百分比") #设置标题名
#百分百的特殊情况下,去掉其它的百分比数字,防止重叠(未完善)
#####
sizes = [rat1,rat2,rat3,rat4]#根据size即百分比大小,来调整饼状图形状
labels = [u'娱乐', u'购物', u'学习', u'其它']
colors = ['orange','pink','lightskyblue','teal']#为饼状图的每个区间安排颜色'lightskyblue'浅蓝色
explode = (0.03, 0.02, 0.02, 0.03)#表示四个扇区“邻居”之间的缝隙距离
patches, l_text, p_text = plot.pie(sizes, explode=explode,labels=labels,colors=colors,
labeldistance=1.06, autopct='%3.0f%%', shadow=False,
startangle=90, pctdistance=0.6)
# labeldistance,文本的位置离远点有多远,1.1指1.1倍半径的位置
# autopct,圆里面的文本格式,%3.1f%%表示小数有三位,整数有一位的浮点数
# shadow,饼是否有阴影
# startangle,起始角度,0,表示从0开始逆时针转,为第一块。一般选择从90度开始比较好看
# pctdistance,百分比的text离圆心的距离
# patches, l_texts, p_texts,为了得到饼图的返回值,p_texts饼图内部文本的,l_texts饼图外label的文本
# 改变文本的大小
# 方法是把每一个text遍历。调用set_size方法设置它的属性
for t in l_text:
t.set_size = (30)
for t in p_text:
t.set_size = (20)#去掉=号修改字体大小
# 设置x,y轴刻度一致,这样饼图才能是圆的
plot.axis('equal')
plot.legend(loc='upper left', bbox_to_anchor=(-0.1, 1))#legend为左上角那种集合的说明
# loc: 表示legend的位置,包括'upper right','upper left','lower right','lower left'等
# bbox_to_anchor: 表示legend距离图形之间的距离,当出现图形与legend重叠时,可使用bbox_to_anchor进行调整legend的位置
# 由两个参数决定,第一个参数为legend距离左边的距离,第二个参数为距离下面的距离
plot.grid()
plot.show()