zoukankan      html  css  js  c++  java
  • 饼状图

    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()
  • 相关阅读:
    IE浏览器中js使用中文标识符的bug
    Javascript变量作用域
    利用JS的动态语言特性对数组排序
    Javascript动态方法调用与参数修改的问题
    数组的平衡点
    Javascript中各种trim的实现
    js對象的比較
    返回两个数组中非相同的元素
    Javascript中匿名函数的多种调用方式
    SQL Server PreLogin Handshake Acknowledgement Error [duplicate]
  • 原文地址:https://www.cnblogs.com/xxswkl/p/10906427.html
Copyright © 2011-2022 走看看