python 画条形图(柱状图)实例


Posted in Python onApril 24, 2020

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

1. 竖放条形图

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

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

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

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

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

碳酸饮料 6 9
绿茶 7 4
矿泉水 6 4
其他 2 6
果汁 1 5
总计 22 28

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

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

图形:

python 画条形图(柱状图)实例

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

python 画条形图(柱状图)实例

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

python 画条形图(柱状图)实例

补充知识:Python 条形图与直方图有非常大的区别

区别:

首先,条形图是用条形的长度表示各类别频数的多少,其宽度(表示类别)则是固定的;

直方图是用面积表示各组频数的多少,矩形的高度表示每一组的频数或频率,宽度则表示各组的组距,因此其高度与宽度均有意义。

其次,由于分组数据具有连续性,直方图的各矩形通常是连续排列,而条形图则是分开排列。

最后,条形图主要用于展示分类数据,而直方图则主要用于展示数据型数据,我们初中学的就是条形统计图,很显然有没有当初那种感觉?(身高-年龄 条形统计图)在坐标上画出每个年龄对应的频数。这就是我们研究数据分布最喜欢用的。如果还是有点蒙,下面相同数据对比一下这两种图像你就会明白!

数据:

年龄 0 1 2 3 4 5 6 7 8 9 10 总数
人数 3 6 7 11 13 18 15 11 7 5 4 100
条形统计图(注重每类多少个):

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
plt.rcParams['font.sans-serif']=['SimHei'] #正常显示中文
plt.rcParams['axes.unicode_minus']=False #正常显示负号
 
# d=pd.read_excel('E:\Python\projects\data\data100.xlsx',header=None)
# d=d[0]
# d=list(d)
 
ages=range(11)
count=[3,6,7,11,13,18,15,11,7,5,4]
plt.bar(ages,count, label='graph 1')
# params
# x: 条形图x轴
# y:条形图的高度
# width:条形图的宽度 默认是0.8
# bottom:条形底部的y坐标值 默认是0
# align:center / edge 条形图是否以x轴坐标为中心点或者是以x轴坐标为边缘
plt.legend()
plt.xlabel('ages')
plt.ylabel('count')
plt.title(u'测试例子——条形图')
 
for i in range(11):
  plt.text(i,count[i]+0.1,"%s"%count[i],va='center')
 
plt.show()

python 画条形图(柱状图)实例

直方图:

import matplotlib.pyplot as plt
import matplotlib.mlab as mlab
import numpy as np
import pandas as pd
plt.rcParams['font.sans-serif']=['SimHei'] #正常显示中文
plt.rcParams['axes.unicode_minus']=False #正常显示负号
# d=np.random.normal(0,1,100)
d=pd.read_excel('E:\Python\projects\data\data100.xlsx',header=None)
d=d[0]
d=list(d)
print(d)
n, bins, patches = plt.hist(x=d, bins=11, color='#0504aa',
        alpha=0.8, rwidth=0.6) #alpha 是颜色深度 rwidth 条形宽度,bins条形箱的数目
 
plt.grid(axis='y', alpha=0.4) #alpha 网格颜色深度
plt.xlabel('age')
plt.ylabel('count')
plt.title('100个样本分布如下')
plt.text(20, 40, r'$\mu=0, sigma=1$')#前面是坐标,写字
# plt.ylim(19) #设置y的范围
 
plt.show()

python 画条形图(柱状图)实例

对比两个图就能知道,条形图将类别对的死死的,但是直方图就用间隔来划分每一柱多少,虽然大体相差不大,但是对于数据研究那影响可大也可小。总之了解了区别才能避免不必要的犯错。

以上这篇python 画条形图(柱状图)实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
简单实现python数独游戏
Mar 30 Python
对numpy和pandas中数组的合并和拆分详解
Apr 11 Python
Python matplotlib通过plt.scatter画空心圆标记出特定的点方法
Dec 13 Python
Python3.6实现带有简单界面的有道翻译小程序
Apr 16 Python
python对常见数据类型的遍历解析
Aug 27 Python
python 字符串常用函数详解
Sep 11 Python
利用Python绘制有趣的万圣节南瓜怪效果
Oct 31 Python
pycharm部署、配置anaconda环境的教程
Mar 24 Python
如何基于python对接钉钉并获取access_token
Apr 21 Python
python矩阵运算,转置,逆运算,共轭矩阵实例
May 11 Python
PyCharm+Miniconda3安装配置教程详解
Feb 16 Python
Python中Permission denied的解决方案
Apr 02 Python
python模拟哔哩哔哩滑块登入验证的实现
Apr 24 #Python
200行python代码实现贪吃蛇游戏
Apr 24 #Python
python Canny边缘检测算法的实现
Apr 24 #Python
python实现文字版扫雷
Apr 24 #Python
离线状态下在jupyter notebook中使用plotly实例
Apr 24 #Python
python3中sys.argv的实例用法
Apr 24 #Python
VScode连接远程服务器上的jupyter notebook的实现
Apr 23 #Python
You might like
source.php查看源文件
2006/12/09 PHP
解析htaccess伪静态的规则
2013/06/18 PHP
Apache站点配置SSL强制跳转443
2021/03/09 Servers
lib.utf.js
2007/08/21 Javascript
JScript中的条件注释详解
2015/04/24 Javascript
JavaScript函数使用的基本教程
2015/06/04 Javascript
swtich/if...else的替代语句
2015/08/16 Javascript
JavaScript 七大技巧(二)
2015/12/13 Javascript
详解js的异步编程技术的方法
2017/02/09 Javascript
JS简单判断函数是否存在的方法
2017/02/13 Javascript
如何使用Bootstrap 按钮实例详解
2017/03/29 Javascript
详解AngularJS 路由 resolve用法
2017/04/24 Javascript
浅析vue中常见循环遍历指令的使用 v-for
2018/04/18 Javascript
小程序图片剪裁加旋转的示例代码
2018/07/10 Javascript
200行HTML+JavaScript实现年会抽奖程序
2019/01/22 Javascript
jQuery实现左右两个列表框的内容相互移动功能示例
2019/01/27 jQuery
微信小程序云开发(数据库)详解
2019/05/17 Javascript
简单了解Ajax表单序列化的实现方法
2019/06/14 Javascript
python获取beautifulphoto随机某图片代码实例
2013/12/18 Python
Python遍历文件夹和读写文件的实现方法
2017/05/10 Python
200行python代码实现2048游戏
2019/07/17 Python
python 批量修改 labelImg 生成的xml文件的方法
2019/09/09 Python
python中with语句结合上下文管理器操作详解
2019/12/19 Python
解决python -m pip install --upgrade pip 升级不成功问题
2020/03/05 Python
浅谈anaconda python 版本对应关系
2020/10/07 Python
python的setattr函数实例用法
2020/12/16 Python
Clarks鞋美国官网:全球领军鞋履品牌
2017/05/13 全球购物
巴西本土电商平台:Americanas
2020/06/21 全球购物
素质拓展感言
2014/01/29 职场文书
建议书怎么写
2014/03/12 职场文书
激励员工的口号
2014/06/16 职场文书
社区综治工作汇报
2014/10/27 职场文书
副总经理岗位职责
2015/02/02 职场文书
2015年物业公司保洁工作总结
2015/10/22 职场文书
自荐信范文
2019/05/20 职场文书
36个正则表达式(开发效率提高80%)
2021/11/17 Javascript