饼状图

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()

 

posted on 2019-05-22 15:56  吃我一枪  阅读(436)  评论(0编辑  收藏  举报

导航