饼状图
1 plt.pie( )
注意无论饼状图、柱状图还是折线图,纵轴的数据类型可以是list,numpy和series。
参考:https://blog.csdn.net/captain811/article/details/79248912
# 导入第三方模块
import matplotlib.pyplot as plt
# 设置绘图的主题风格(不妨使用R中的ggplot分隔)
plt.style.use('ggplot')
# 构造数据
edu = [0.2515,0.3724,0.3336,0.0368,0.0057]
labels = ['中专','大专','本科','硕士','其他']
explode = [0,0.1,0,0,0] # 用于突出显示大专学历人群
colors=['#9999ff','#ff9999','#7777aa','#2442aa','#dd5555'] # 自定义颜色
# 中文乱码和坐标轴负号的处理
plt.rcParams['font.sans-serif'] = ['Dengxian']
plt.rcParams['axes.unicode_minus'] = False
# 将横、纵坐标轴标准化处理,保证饼图是一个正圆,否则为椭圆
plt.axes(aspect='equal')
# 控制x轴和y轴的范围
plt.xlim(0,5)
plt.ylim(0,5)
# 绘制饼图
plt.pie(x = edu, # 绘图数据
explode=explode, # 突出显示大专人群
labels=labels, # 添加教育水平标签
colors=colors, # 设置饼图的自定义填充色
autopct='%.1f%%', # 设置百分比的格式,这里保留一位小数
pctdistance=0.8, # 设置百分比标签与圆心的距离
labeldistance = 1.4, # 设置教育水平标签与圆心的距离
startangle = 180, # 设置饼图的初始角度
radius = 1.5, # 设置饼图的半径
counterclock = False, # 是否逆时针,这里设置为顺时针方向
wedgeprops = {'linewidth': 1.5, 'edgecolor':'black'},# 设置饼图内外边界的属性值
textprops = {'fontsize':12, 'color':'k'}, # 设置文本标签的属性值
center = (2.5, 2.5), # 设置饼图的原点
frame = 1 )# 是否显示饼图的图框,这里设置显示
# 删除x轴和y轴的刻度
plt.xticks(())
plt.yticks(())
# 添加图标题
plt.title('芝麻信用失信用户教育水平分布')
# 显示图形
plt.show()
当画饼状图时,类别太多,label比较拥挤时,可用如下方法设置字体大小
方法:调用plt.pie()函数时,生成l_text和p_text,在对其进行修改
参考:https://blog.csdn.net/chenpe32cp/article/details/87865625
plt.figure( figsize= (30,30))
label = ['商务', '实用工具', '影音娱乐', '动作射击', '新闻阅读', '教育','便捷生活', '休闲益智', '运动健康', '经营策略',
'金融理财', '体育竞速', '社交通讯', '购物比价', '角色扮演','出行导航', '棋牌桌游', '拍摄美化', '儿童', '旅游住宿',
'汽车', '美食', '主题个性', '网络游戏','学习办公', '棋牌天地']
for i in range(6):
plt.subplot(2,3,i+1).set_title(i+1,fontsize=20)
values = app_actived_sum.loc[i]
patches,l_text,p_text = plt.pie(values, labels = label,autopct='%1.1f%%', pctdistance = 0.8, labeldistance = 1.1,textprops = {'fontsize':12})
# plt.pie(values,autopct='%1.1f%%', pctdistance = 0.8)
for t in l_text:
t.set_size=(0.2)
plt.show()
bili = user_basic.groupby('color')['color_number'].agg(['count']).reset_index()
for i in range(len(bili['color'])):
if (bili['count'][i] < 15000) :
bili['color'][i] = '其它'
bili = bili.groupby('color')['count'].agg(['sum']).reset_index()
plt.figure( figsize= (30,30))
label = bili['color'].tolist()
values = bili['sum'].tolist()
plt.pie(values,labels=label, autopct='%1.1f%%', pctdistance = 0.92, labeldistance = 1.5)
# values是饼状图的比例, labels是设定的标签,autopct是设定的小数点后的位数,
# pctdistance是比例距圆心的距离,labeldistance是标签距圆心的距离
plt.legend()
plt.show()
画二乘三分部的扇形图方法
plt.figure( figsize= (30,30)) label = ['商务', '实用工具', '影音娱乐', '动作射击', '新闻阅读', '教育','便捷生活', '休闲益智', '运动健康', '经营策略', '金融理财', '体育竞速', '社交通讯', '购物比价', '角色扮演','出行导航', '棋牌桌游', '拍摄美化', '儿童', '旅游住宿', '汽车', '美食', '主题个性', '网络游戏','学习办公', '棋牌天地'] for i in range(6): plt.subplot(2,3,i+1).set_title(i+1,fontsize=20) values = app_actived_sum.loc[i] patches,l_text,p_text = plt.pie(values, labels = label,autopct='%1.1f%%', pctdistance = 0.8, labeldistance = 1.1,textprops = {'fontsize':12}) # plt.pie(values,autopct='%1.1f%%', pctdistance = 0.8) for t in l_text: t.set_size=(0.2) plt.show()