精华内容
下载资源
问答
  • python条形图(柱状图)

    万次阅读 多人点赞 2019-08-24 00:06:35
    竖放条形图bar(x, height, [width], **kwargs)2. 画横放条形图bar(x, width, [height], **kwargs)3. 并列条形图 条形图(bar chart),也称为柱状图,是一种以长方形的长度为变量的统计图表,长方形的长度与它所...


    条形图(bar chart),也称为柱状图,是一种以长方形的长度为变量的统计图表,长方形的长度与它所对应的变量数值呈一定比例。

    1. 竖放条形图

    画条形图要用到 pyplot 中的 bar 函数,该函数的基本语法为:

    bar(x, height, [width], **kwargs)

    x数组,每个条形的横坐标
    height个数或一个数组,条形的高度
    [width]可选参数,一个数或一个数组,条形的宽度,默认为 0.8
    **kwargs不定长的关键字参数,用字典形式设置条形图的其他属性

    **kwargs 中常设置的参数包括图形标签 label,颜色标签 color,不透明度 alpha 等。

    假设某项针对男女大学生购买饮用水爱好的调查结果如下表:

    碳酸饮料69
    绿茶74
    矿泉水64
    其他26
    果汁15
    总计2228

    画出男生饮用水情况的直方图,代码如下:

    import matplotlib.pyplot as plt
    
    # 这两行代码解决 plt 中文显示的问题
    plt.rcParams['font.sans-serif'] = ['SimHei']
    plt.rcParams['axes.unicode_minus'] = False
    
    waters = ('碳酸饮料', '绿茶', '矿泉水', '果汁', '其他')
    buy_number = [6, 7, 6, 1, 2]
    
    plt.bar(waters, buy_number)
    plt.title('男性购买饮用水情况的调查结果')
    
    plt.show()
    

    图形:
    在这里插入图片描述

    2. 横放条形图

    若要生成横的条形图,则可以使用 barh 函数,其语法与 bar 函数非常类似。

    bar(x, width, [height], **kwargs)

    y数组,每个条形的纵坐标
    width一个数或一个数组,条形的宽度
    [height]可选参数,一个数或一个数组,条形的高度,默认为 0.8
    **kwargs不定长的关键字参数,用字典形式设置条形图的其他属性

    代码:

    import matplotlib.pyplot as plt
    
    # 这两行代码解决 plt 中文显示的问题
    plt.rcParams['font.sans-serif'] = ['SimHei']
    plt.rcParams['axes.unicode_minus'] = False
    
    waters = ('碳酸饮料', '绿茶', '矿泉水', '果汁', '其他')
    buy_number = [6, 7, 6, 1, 2]
    
    plt.barh(waters, buy_number)  # 横放条形图函数 barh
    plt.title('男性购买饮用水情况的调查结果')
    
    plt.show()
    

    在这里插入图片描述

    3. 并列条形图

    若要将男生与女生的调查情况画出两个条形图一块显示,则可以使用 bar 或 barh 函数两次,并调整 bar 或 barh 函数的条形图位置坐标以及相应刻度,使得两组条形图能够并排显示。

    import matplotlib.pyplot as plt
    import numpy as np
    
    # 这两行代码解决 plt 中文显示的问题
    plt.rcParams['font.sans-serif'] = ['SimHei']
    plt.rcParams['axes.unicode_minus'] = False
    
    # 输入统计数据
    waters = ('碳酸饮料', '绿茶', '矿泉水', '果汁', '其他')
    buy_number_male = [6, 7, 6, 1, 2]
    buy_number_female = [9, 4, 4, 5, 6]
    
    bar_width = 0.3  # 条形宽度
    index_male = np.arange(len(waters))  # 男生条形图的横坐标
    index_female = index_male + bar_width  # 女生条形图的横坐标
    
    # 使用两次 bar 函数画出两组条形图
    plt.bar(index_male, height=buy_number_male, width=bar_width, color='b', label='男性')
    plt.bar(index_female, height=buy_number_female, width=bar_width, color='g', label='女性')
    
    plt.legend()  # 显示图例
    plt.xticks(index_male + bar_width/2, waters)  # 让横坐标轴刻度显示 waters 里的饮用水, index_male + bar_width/2 为横坐标轴刻度的位置
    plt.ylabel('购买量')  # 纵坐标轴标题
    plt.title('购买饮用水情况的调查结果')  # 图形标题
    
    plt.show()
    

    显示:
    在这里插入图片描述

    展开全文
  • 一、条形图绘制参数详解1、bar(left, height, width=0.8, bottom=None, color=None, edgecolor=None, linewidth=None, tick_label=None, xerr=None, yerr=None, label = None, ecolor=None, align, log=False, **...

    一、条形图绘制参数详解

    1、bar(left, height, width=0.8, bottom=None, color=None, edgecolor=None, linewidth=None, tick_label=None, xerr=None, yerr=None, label = None, ecolor=None, align, log=False, **kwargs)

    x:传递数值序列,指定条形图中x轴上的刻度值

    height:传递数值序列,指定条形图y轴上的高度

    width:指定条形图的宽度,默认为0.8

    bottom:用于绘制堆叠条形图

    color:指定条形图的填充色

    edgecolor:指定条形图的边框色

    linewidth:指定条形图边框的宽度,如果指定为0,表示不绘制边框

    tick_label:指定条形图的刻度标签

    xerr:如果参数不为None,表示在条形图的基础上添加误差棒

    yerr:参数含义同xerr

    label:指定条形图的标签,一般用以添加图例

    ecolor:指定条形图误差棒的颜色align:指定x轴刻度标签的对齐方式,默认为center,表示刻度标签居中对齐,如果设置为edge,则表示在每个条形的左下角呈现刻度标签

    log:bool类型参数,是否对坐标轴进行log变换,默认为False

    **kwargs:关键字参数,用于对条形图进行其他设置,如透明度等

    1 #条形图的绘制--垂直条形图

    2 #读入数据

    3 GDP = pd.read_excel('Province GDP 2017.xlsx')4 '''

    5 Province GDP6 北京 2.87 上海 3.018 广东 8.999 江苏 8.5910 重庆 1.9511 天津 1.8612 '''

    13 #设置绘图风格(不妨使用R语言中的ggplot2风格)

    14 plt.style.use('ggplot')15 #绘制条形图

    16 plt.bar(x = range(GDP.shape[0]), #指定条形图x轴的刻度值

    17 height = GDP.GDP, #指定条形图y轴的数值

    18 tick_label = GDP.Province, #指定条形图x轴的刻度标签

    19 color = 'steelblue', #指定条形图的填充色

    20 width = 0.8

    21 )22 #添加y轴的标签

    23 plt.ylabel('GDP(万亿)')24 #添加条形图的标题

    25 plt.title('2017年度6个省份GDP分布')26 #为每个条形图添加数值标签

    27 for x,y inenumerate(GDP.GDP):28 plt.text(x,y+0.1,'%s' %round(y,1),ha='center')29 #显示图形

    30 plt.show()

    1501858-20190924203137772-2143103535.png

    1501858-20190925195333603-330032447.png

    1 #条形图的绘制--水平条形图

    2 #对读入的数据作升序排序

    3 GDP.sort_values(by = 'GDP', inplace =True)4 #绘制条形图

    5 plt.barh(y = range(GDP.shape[0]), #指定条形图y轴的刻度值

    6 width = GDP.GDP, #指定条形图x轴的数值

    7 tick_label = GDP.Province, #指定条形图y轴的刻度标签

    8 color = 'steelblue', #指定条形图的填充色

    9 )10 #添加x轴的标签

    11 plt.xlabel('GDP(万亿)')12 #添加条形图的标题

    13 plt.title('2017年度6个省份GDP分布')14 #为每个条形图添加数值标签

    15 for y,x inenumerate(GDP.GDP):16 plt.text(x+0.1,y,'%s' %round(x,1),va='center')17 #显示图形

    18 plt.show()

    1501858-20190924203711108-1339893477.png

    1501858-20190925195413350-1443043709.png

    ③绘制堆叠条形图

    1 importpandas as pd2 importmatplotlib.pyplot as plt3 #条形图的绘制--堆叠条形图

    4 #读入数据

    5 Industry_GDP = pd.read_excel('Industry_GDP.xlsx')6 #取出四个不同的季度标签,用作堆叠条形图x轴的刻度标签

    7 Quarters =Industry_GDP.Quarter.unique()8 #取出第一产业的四季度值

    9 Industry1 = Industry_GDP.GPD[Industry_GDP.Industry_Type == '第一产业']10 #重新设置行索引

    11 Industry1.index =range(len(Quarters))12 #取出第二产业的四季度值

    13 Industry2 = Industry_GDP.GPD[Industry_GDP.Industry_Type == '第二产业']14 #重新设置行索引

    15 Industry2.index =range(len(Quarters))16 #取出第三产业的四季度值

    17 Industry3 = Industry_GDP.GPD[Industry_GDP.Industry_Type == '第三产业']18

    19 #绘制堆叠条形图

    20 #中文乱码和坐标轴负号的处理

    21 plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']22 plt.rcParams['axes.unicode_minus'] =False23 #各季度下第一产业的条形图

    24 plt.bar(x = range(len(Quarters)), height=Industry1, color = 'steelblue', label = '第一产业', tick_label =Quarters)25 #各季度下第二产业的条形图

    26 plt.bar(x = range(len(Quarters)), height=Industry2, bottom = Industry1, color = 'green', label = '第二产业')27 #各季度下第三产业的条形图

    28 plt.bar(x = range(len(Quarters)), height=Industry3, bottom = Industry1 + Industry2, color = 'red', label = '第三产业')29 #添加y轴标签

    30 plt.ylabel('生成总值(亿)')31 #添加图形标题

    32 plt.title('2017年各季度三产业总值')33 #显示各产业的图例

    34 plt.legend(loc =2,fontsize = 'small')35 #显示图形

    36 plt.show()

    1501858-20190925195614371-1992331943.png

    1501858-20190925195646254-1111607871.png

    ④水平交错条形图

    1 #条形图的绘制--水平交错条形图

    2 #导入第三方模块

    3 importmatplotlib.pyplot as plt4 importnumpy as np5 importpandas as pd6 #读入数据

    7 HuRun = pd.read_excel('HuRun.xlsx')8 #取出城市名称

    9 Cities =HuRun.City.unique()10 #取出2016年各城市亿万资产家庭数

    11 Counts2016 = HuRun.Counts[HuRun.Year == 2016]12 #取出2017年各城市亿万资产家庭数

    13 Counts2017 = HuRun.Counts[HuRun.Year == 2017]14

    15 #绘制水平交错条形图

    16 bar_width = 0.4

    17 plt.bar(x = np.arange(len(Cities)), height = Counts2016, label = '2016', color = 'steelblue', width =bar_width)18 plt.bar(x = np.arange(len(Cities))+bar_width, height = Counts2017, label = '2017', color = 'indianred', width =bar_width)19 #添加刻度标签(向右偏移0.225)

    20 plt.xticks(np.arange(5)+0.2, Cities)21 #添加y轴标签

    22 plt.ylabel('亿万资产家庭数')23 #添加图形标题

    24 plt.title('近两年5个城市亿万资产家庭数比较')25 #添加图例

    26 plt.legend()27 #显示图形

    28 plt.show()

    1501858-20190925202317098-1112652421.png

    1501858-20190925202406952-1663265662.png

    二、

    1 #Pandas模块之垂直或水平条形图

    2 #读入数据

    3 GDP = pd.read_excel('Province GDP 2017.xlsx')4 #绘图(此时的数据集在前文已经按各省GDP做过升序处理)

    5 GDP.GDP.plot(kind = 'bar', width = 0.8, rot = 0, color = 'steelblue', title = '2017年度6个省份GDP分布')6 #添加y轴标签

    7 plt.ylabel('GDP(万亿)')8 #添加x轴刻度标签

    9 plt.xticks(range(len(GDP.Province)), #指定刻度标签的位置

    10 GDP.Province #指出具体的刻度标签值

    11 )12 #为每个条形图添加数值标签

    13 for x,y inenumerate(GDP.GDP):14 plt.text(x-0.1,y+0.2,'%s' %round(y,1),va='center')15 #显示图形

    16 plt.show()

    1501858-20190925231435967-1873310601.png

    1 #Pandas模块之水平交错条形图

    2 HuRun = pd.read_excel('HuRun.xlsx')3 HuRun_reshape = HuRun.pivot_table(index = 'City', columns='Year', values='Counts').reset_index()4 #对数据集降序排序

    5 HuRun_reshape.sort_values(by = 2016, ascending = False, inplace =True)6 HuRun_reshape.plot(x = 'City', y = [2016,2017], kind = 'bar', color = ['steelblue', 'indianred'],7 rot = 0, #用于旋转x轴刻度标签的角度,0表示水平显示刻度标签

    8 width = 0.8, title = '近两年5个城市亿万资产家庭数比较')9 #添加y轴标签

    10 plt.ylabel('亿万资产家庭数')11 plt.xlabel('')12 plt.show()

    1501858-20190925231818706-1937563494.png

    1 #seaborn模块之垂直或水平条形图

    2 #导入第三方模块

    3 importseaborn as sns4

    5 #读入数据

    6 GDP = pd.read_excel('Province GDP 2017.xlsx')7 sns.barplot(y = 'Province', #指定条形图x轴的数据

    8 x = 'GDP', #指定条形图y轴的数据

    9 data = GDP, #指定需要绘图的数据集

    10 color = 'steelblue', #指定条形图的填充色

    11 orient = 'horizontal' #将条形图水平显示

    12 )13 #重新设置x轴和y轴的标签

    14 plt.xlabel('GDP(万亿)')15 plt.ylabel('')16 #添加图形的标题

    17 plt.title('2017年度6个省份GDP分布')18 #为每个条形图添加数值标签

    19 for y,x inenumerate(GDP.GDP):20 plt.text(x,y,'%s' %round(x,1),va='center')21 #显示图形

    22 plt.show()

    1501858-20190925232216693-252650014.png

    1 #读入数据

    2 Titanic = pd.read_csv('titanic_train.csv')3 #绘制水平交错条形图

    4 sns.barplot(x = 'Pclass', #指定x轴数据

    5 y = 'Age', #指定y轴数据

    6 hue = 'Sex', #指定分组数据

    7 data = Titanic, #指定绘图数据集

    8 palette = 'RdBu', #指定男女性别的不同颜色

    9 errcolor = 'blue', #指定误差棒的颜色

    10 errwidth=2, #指定误差棒的线宽

    11 saturation = 1, #指定颜色的透明度,这里设置为无透明度

    12 capsize = 0.05 #指定误差棒两端线条的宽度

    13 )14 #添加图形标题

    15 plt.title('各船舱等级中男女乘客的年龄差异')16 #显示图形

    17 plt.show()

    1501858-20190925232411310-827359540.png

    1501858-20190925232539159-1994284134.png

    展开全文
  • python中的matplotlib绘制动态条形图

      之前逛微博时,看到爱豆排行榜 动态条形图,觉得很好奇,感觉这个动态图用到工作汇报中去会很炫酷,想尝试自己做一下。

      搜索了一圈的资料发现是用d3.js做的,而且很麻烦,所以决定先用熟悉的Python实现一下。解决了重重问题终于绘制出了 python版的动态条形图
      

    一、先看下绘制好的动态条形图

      ​
    在这里插入图片描述

    图1 娱乐圈男明星排行榜动态条形图

    数据来源:123粉丝网

      图1是用第500期(截止2019年7月6日)到538期(截止2020年3月28日)的数据绘制的动态条形图。我是爬虫爬下来的数据,如果不想爬虫可直接到公众号中回复 "娱乐圈排行榜条形图" ,即可获取数据。

      

    二、绘制动态条形图代码分步解析

      ​

    1 导入库并加载数据
    import matplotlib.pyplot as plt
    import matplotlib
    import numpy as np
    import pandas as pd
    from pandas import concat
    import os
    ​
    os.chdir(r"F:\微信公众号\Python\21.娱乐圈排行榜\2.绘制动图条形图")  # 修改当前程序操作的路径
    star_man = pd.read_csv("star_man.csv")  #读取数据
    star_man = star_man.iloc[1:,:]          #去除第一行无用数据
    

    代码解析:

    import: 加载绘图库、数据处理库、文件路径管理库;

    os.chdir: 设置python的工作路径,可以替换成你的路径;

    star_man: 读取男明星排行榜数据;

      

    2 按前10名出现的次数给男演员分配颜色
    #找到各期前10名的男演员名字
    period  = sorted(list(star_man.period_num.drop_duplicates().values))  #找出所有期数
    all_data = []  #构造存放所有数据的空列表
    for i in period:
        data = star_man[star_man.period_num==i]  #取出某一期的数据
        data1 = data.iloc[0:9,:]  #取改期数据的前10名信息
        all_data.append(data1)    #把取出的信息存放到列表中
    all_data_1 = concat(all_data)  #把列表中存放的数据框连接成一个数据框
    #统计出现次数
    all_data_1.name.value_counts()
    

    代码解析:

    period: 找出所有期数去重,并按从小到大排序;

    all_data: 构造存放所有数据的空列表;

    for: 构造循环取出每期前10名的信息;

    all_data_1: 用concat函数把列表中存放的数据框连接成一个数据框(列表中不仅能存单个元素还可以存数据框);

    value_counts(): 统计男演员在前10名中出现的次数;

    :颜色分配是绘制动态条形图的关键,本文按照在前10名中出现次数分配颜色,出现次数越多,给的颜色越深,标注颜色并无其它含义。

    得到结果:
    在这里插入图片描述

    3 绘制单个条形图
    # 图形设置
    plt.rcParams['figure.figsize'] = (12, 50)     # 图像显示大小
    plt.rcParams['font.sans-serif'] = ['SimHei']  # 防止中文标签乱码,还有通过导入字体文件的方法
    plt.rcParams['axes.unicode_minus'] = False
    plt.rcParams['lines.linewidth'] = 0.8         # 设置曲线线条宽度#绘制单个人的图形
    person_num = 10  #绘制person_num个人的条形图
    data = star_man[star_man.period_num==538]  #取某一期(538)的数据
    data1 = data.iloc[0:person_num,:].sort_values(by = 'popularity_value', ascending = True) #取person_num个人的数据绘制条形图
    name_color = pd.read_csv("name_color1.csv",encoding = 'gbk')        #控制每个人绘图的颜色
    colors_0 = pd.merge(data1, name_color, how = 'left',  on = 'name')  #控制当前这一期的颜色
    colors_1 = list(colors_0.color.values)                              #取出对应的颜色
    plt.barh(data1.name, data1.popularity_value, height=0.5, color=colors_1, alpha=1)  #从下往上画
    plt.xlim(min(data1.popularity_value),max(data1.popularity_value)*1.05)  #设置x轴的范围
    plt.xlabel("人气值")  #给x轴加说明
    title = '第'+str(int(data1.period_num[1]))+'期娱乐圈男星排行榜'  #构造图片标题
    plt.title(title, fontsize=18)  #给条形图添加标题  
    plt.annotate(str(int(data1.end_time[1])), xy=(max(data1.popularity_value)*0.88, 1), xytext=(max(data1.popularity_value)*0.9, 1),color="r",weight="bold",\
                 arrowprops=dict(arrowstyle='-',connectionstyle='arc3',color='red'),bbox=dict(boxstyle='round,pad=0.5', fc='yellow', ec='k',lw=1 ,alpha=0.4),\
                fontsize=15)  #添加数据截止统计日期
    for x, y in enumerate(data1.popularity_value):  #添加名字
        plt.text(y + 10, x - 0.1 , '%s' % colors_0.name[x],fontweight='heavy')
    plt.show()
    

    代码解析:

    plt.rcParams: 设置图形的参数;

    person_num: 确定每期绘制的人数;

    data: 取出538期排行榜的数据;

    data1: 取出前person_num个人的信息,并按人气值排序;

    name_color: 读取根据前10名出现次数分配的颜色;

    colors_0: 根据分配的颜色,给出当前期绘制颜色;

    plt.barh: 绘制横向条形图;

    plt.xlim: 设置x轴的范围;

    plt.annotate:添加图形右下角截止统计日期,其中str是添加的文字内容,xy是箭头的位置,xytext是文字的位置,bbox是添加边框;

    for x, y:添加人名;

    得到结果:

    在这里插入图片描述

    图2 娱乐圈男明星第538期排行榜条形图

    数据来源:123粉丝网

      

    三、绘制动态条形图整合代码

    import matplotlib.pyplot as plt
    import matplotlib
    import numpy as np
    import pandas as pd
    from pandas import concat
    import os
    ​
    os.chdir(r"F:\微信公众号\Python\21.娱乐圈排行榜\2.绘制动图条形图")                   # 修改当前程序操作的路径
    star_man = pd.read_csv("star_man.csv")
    star_man = star_man.iloc[1:,:]
    period  = sorted(list(star_man.period_num.drop_duplicates().values))
    #找到各期前15名的男演员名字
    all_data = []
    for i in period:
        data = star_man[star_man.period_num==i]
        data1 = data.iloc[0:14,:]
        all_data.append(data1)
    all_data_1 = concat(all_data)
    # 图形设置
    plt.rcParams['figure.figsize'] = (12, 50)     # 图像显示大小
    plt.rcParams['font.sans-serif'] = ['SimHei']  # 防止中文标签乱码,还有通过导入字体文件的方法
    plt.rcParams['axes.unicode_minus'] = False
    plt.rcParams['lines.linewidth'] = 0.8         # 设置曲线线条宽度
    for i in period:
        person_num = 10              #绘制person_num+1个人的图像
        data = star_man[star_man.period_num==i]    #取某一期的数据
        data1 = data.iloc[0:person_num,:].sort_values(by = 'popularity_value', ascending = True) #取person_num+1个人的数据绘制条形图
        name_color = pd.read_csv("name_color1.csv",encoding = 'gbk')        #控制每个人绘图的颜色
        colors_0 = pd.merge(data1, name_color, how = 'left',  on = 'name')  #控制当前这一期的颜色
        colors_1 = list(colors_0.color.values)                              #取出对应的颜色
        plt.clf()  # 清除之前画的图
        plt.barh(data1.name, data1.popularity_value, height=0.5, color=colors_1, alpha=1)      #从下往上画
        plt.xlim(min(data1.popularity_value),max(data1.popularity_value)*1.05)
        plt.xlabel("人气值")
        title = '第'+str(int(max(data1.period_num)))+'期娱乐圈男星排行榜'
        plt.title(title, fontsize=18)
        plt.annotate(str(int(max(data1.end_time))), xy=(max(data1.popularity_value)*0.88, 1), xytext=(max(data1.popularity_value)*0.9, 1),color="r",weight="bold",\
                     arrowprops=dict(arrowstyle='-',connectionstyle='arc3',color='red'),bbox=dict(boxstyle='round,pad=0.5', fc='yellow', ec='k',lw=1 ,alpha=0.4),\
                    fontsize=15)
        for x, y in enumerate(data1.popularity_value):  #添加名字
            plt.text(y + 10, x - 0.1 , '%s' % colors_0.name[x],fontweight='heavy')
        plt.pause(0.4)     # 设置暂停时间,太快图表无法正常显示
    plt.ioff()    # 关闭画图的窗口,即关闭交互模式
    plt.show()    # 显示图片,防止闪退
    

    代码解析:

    plt.clf():清除之前画的图,避免在一张图上画两个图;

    plt.pause:每隔0.4秒展示一张图。

       注: 该代码只是在绘制单个条形图代码的基础上,用循环把所有图每隔一个很短的时间展示出来,给人一种动图的效果。

      本文是本人使用matplotlib库进行绘图得到的结果,如有问题请指正。若想获取文中所有可直接执行的代码和数据,可在公众号中回复"娱乐圈排行榜条形图",即可免费获取。如对代码有疑问,可以到公众号中私信我。

    你可能感兴趣:
    孤立森林
    风控建模整体流程
    爬娱乐圈排行榜数据
    用Python绘制皮卡丘
    用Python绘制词云图
    Python入门干货经验(免费提供资料)
    用Python绘制杨紫作品集动态二维码
    【Python】【爬虫】Requests库详解

    长按(扫一扫)识别上方二维码学习更多Python和建模知识
    展开全文
  • 1.首先要绘制一个简单的条形图import numpy as npimport matplotlib.pyplot as pltfrom matplotlib import mlabfrom matplotlib import rcParamsfig1 = plt.figure(2)rects =plt.bar(left = (0.2,1),height = (1,0.5...

    1.首先要绘制一个简单的条形图

    import numpy as np

    import matplotlib.pyplot as plt

    from matplotlib import mlab

    from matplotlib import rcParams

    fig1 = plt.figure(2)

    rects =plt.bar(left = (0.2,1),height = (1,0.5),width = 0.2,align="center",yerr=0.000001)

    plt.title('Pe')

    plt.show()

    20171219142556690.png?2017111914268

    1.1上面中rects=plt.bar(left=(0.2,1),height=(1,0.5),width=0.2,align=”center”,yerr=0.000001)这句代码是最重要的,其中left表示直方图的开始的位置(也就是最左边的地方),height是指直方图的高度,当直方图太粗时,可以通过width来定义直方图的宽度,注意多个直方图要用元组,yerr这个参数是防止直方图触顶。

    2.增加直方图脚注

    import numpy as np

    import matplotlib.pyplot as plt

    from matplotlib import mlab

    from matplotlib import rcParams

    fig1 = plt.figure(2)

    rects =plt.bar(left = (0.2,1),height = (1,0.5),width = 0.2,align="center",yerr=0.000001)

    plt.title('Pe')

    plt.xticks((0.2,1),('frst','second'))

    plt.show()

    20171219142649629.png?20171119142659

    3.条形图上显示具体的数字(自动编号)

    import numpy as np

    import matplotlib.pyplot as plt

    from matplotlib import mlab

    from matplotlib import rcParams

    fig1 = plt.figure(2)

    rects =plt.bar(left = (0.2,1),height = (1,0.5),width = 0.2,align="center",yerr=0.000001)

    plt.title('Pe')

    def autolabel(rects):

    for rect in rects:

    height = rect.get_height()

    plt.text(rect.get_x()+rect.get_width()/2., 1.03*height, '%s' % float(height))

    autolabel(rects)

    plt.xticks((0.2,1),('frst','second'))

    plt.show()

    20171219142750611.png?2017111914283

    4.改变颜色

    import numpy as np

    import matplotlib.pyplot as plt

    from matplotlib import mlab

    from matplotlib import rcParams

    fig1 = plt.figure(2)

    rects =plt.bar(left = (0.2,1),height = (1,0.5),color=('r','g'),width = 0.2,align="center",yerr=0.000001)

    plt.title('Pe')

    def autolabel(rects):

    for rect in rects:

    height = rect.get_height()

    plt.text(rect.get_x()+rect.get_width()/2., 1.03*height, '%s' % float(height))

    autolabel(rects)

    plt.xticks((0.2,1),('frst','second'))

    plt.show()

    20171219142841753.png?20171119142852

    5.添加图注

    import numpy as np

    import matplotlib.pyplot as plt

    from matplotlib import mlab

    from matplotlib import rcParams

    fig1 = plt.figure(2)

    rects1 =plt.bar(left = (0.2),height = (0.5),color=('g'),label=(('no1')),width = 0.2,align="center",yerr=0.000001)

    rects2 =plt.bar(left = (1),height = (1),color=('r'),label=(('no2')),width = 0.2,align="center",yerr=0.000001)

    plt.legend()

    plt.xticks((0.2,1),('frst','second'))

    plt.title('Pe')

    def autolabel(rects):

    for rect in rects:

    height = rect.get_height()

    plt.text(rect.get_x()+rect.get_width()/2., 1.03*height, '%s' % float(height))

    autolabel(rects1)

    autolabel(rects2)

    plt.show()

    20171219142929984.png?20171119142939

    6大家根据自己的需要自己来绘制自己的条形图

    下面回答网友提问,如何画在条形图上垂直显示数据:

    下面这个函数是用来垂直显示的,其中设置角度就可以以任意方式来显示。

    def autolabel(rects,Num=1.12,rotation1=90,NN=1):

    for rect in rects:

    height = rect.get_height()

    plt.text(rect.get_x()-0.04+rect.get_width()/2., Num*height, '%s' % float(height*NN),rotation=rotation1)

    调用方式如下

    rects1 =plt.bar(left = (0.05),height = (Pe_FH),color=('b'),label=('FHMM'),width = 0.1,align="center",yerr=0.000001);

    autolabel(rects1,1.09);

    下面是效果图

    20171219143127837.jpg?20171119143139

    总结

    以上就是本文关于python绘制条形图方法代码详解的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参考本站:

    如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

    展开全文
  • 做为干数据分析的,数据可视化是必备的技能,最近经常在网上看到动态排名条形图,这种动态排名条形图能很好的表达在某一个时间周期,随着时间的变化,各参数指标的增减变化,形象直观,让人很容易理解。加上BGM(背景...
  • 主要介绍了python绘制条形图方法代码详解,具有一定借鉴价值,需要的朋友可以参考下。
  • 主要介绍了python条形图(柱状图)实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 原博文2020-05-13 22:44 −彩色多变量叠加条形图分别为多变量所代表的图形设置颜色:r_list = [255, 123, 223, 167, 32]g_list = [218, 222, 99, 245, 230]b_list = [185, 173, 71, 238, 250]绘制第一个变量的条形图...
  • Python seaborn 条形图

    千次阅读 2019-07-12 20:43:39
    条形图 import seaborn as sns name_list = [] time_list = [] plt.grid() plt.xlabel('名字') plt.ylabel('本周迟到时长/min') plt.title('%s迟到榜' % week_index) sns.barplot(x=name_list, y=time_list, ci=....
  • Python实现动态条形图

    千次阅读 2020-10-11 17:00:16
    最后测试代码 import bar_chart_race as bcr # 获取数据 df = bcr.load_dataset('covid19_tutorial') print(df) # orientation='v',生成柱状 bcr.bar_chart_race(df, 'covid19_horiz.gif', orientation='v') 结果...
  • 绘制一次条形图并保存返回值,这是一组Rects: rects = plt.bar(range(N), x, align='center') 然后,要更改条形的高度,请调用rect.set_height: for rect, h in zip(rects, x): rect.set_height(h) import numpy as ...
  • python条形图

    2020-03-10 11:21:32
    数据分析展示中,条形图很重要。 它易于阅读,很容易快速得出结论:哪一类最 大、哪一类最小以及类别之间的增减区别。 下面????总结了在Python中绘制条形图的方式。 ...
  • python 绘制条形图

    千次阅读 2019-12-04 12:00:48
    plt.bar
  • Python绘制条形图

    2019-10-04 17:00:08
    (一)绘制条形图 绘制条形用的是matplotlib.pyplot下的bar方法 绘制横向条形图用的是matplotlib.pyplot下的barh方法 题目:绘制内地电影票房总排行榜(前20)票房对比图(数据网址:http://58921.com/alltime) ...
  • Python实现条形图的绘制

    万次阅读 2018-11-05 22:55:27
    条形图是一种用来描绘已汇总的分类型数据的频数分布、相对频数分布或百分数频数分布。(百分数频数就是相对频数乘以100%) 绘制条形图的主要方法: 方法1:通过pandas包中的Series对象或DataFrame对象调用plot()、...
  • 1.首先要绘制一个简单的条形图import numpy as npimport matplotlib.pyplot as pltfrom matplotlib import mlabfrom matplotlib import rcParamsfig1 = plt.figure(2)rects =plt.bar(left = (0.2,1),height = (1,0.5...
  • python 画画条条形形图图(柱柱状状图图)实实例例 这篇文章主要介绍了python条形图(柱状图)实例具有很好的参考价值希望对大家有所帮助一 跟随小编 过来看看吧 条形图 bar chart也称为柱状图是一种以长方形的长度为...
  • Python条形图

    千次阅读 2018-12-25 22:27:27
    # 设置条形图所代表的数量 for x,y in enumerate(list_add_num):  plt.text(x,y+20,'%s'%round(y,1),ha='center') # 折线图 plt.plot(range(len(list_add_name)),list_add_num,marker = 'o',color='coral') # ...
  • 最全Python绘制条形图(柱状图)

    千次阅读 2021-02-04 13:55:43
    让你彻底掌握在python中绘制条形图
  • 我有一堆数字出现,并希望在条形图(如直方图)中绘制它们.我有图表工作,但它按照我输入的值的顺序,而不是从最高到最低的顺序,这是我想要的.这是到目前为止的代码:phenos = [128, 20, 0, 144, 4, 16, 160, 136, 192, ...
  • 使用Python动态条形图

    千次阅读 热门讨论 2020-07-15 19:37:06
    2020),interval=500) #interval越大速度越慢 #保存到jshtml HTML(animator.to_jshtml()) 结果如下: 当然,也可以不使用Python,目前很多网站都能实现这一目标,以下就是我在某网站上制作的动态条形图

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 18,897
精华内容 7,558
关键字:

python动态条形图

python 订阅