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的Treq on Twisted来进行HTTP压力测试
Apr 16 Python
Python对字符串实现去重操作的方法示例
Aug 11 Python
Python实战小程序利用matplotlib模块画图代码分享
Dec 09 Python
Windows下Anaconda的安装和简单使用方法
Jan 04 Python
Python读取Excel表格,并同时画折线图和柱状图的方法
Oct 14 Python
python中yield的用法详解——最简单,最清晰的解释
Apr 04 Python
python for循环remove同一个list过程解析
Aug 14 Python
Python注释、分支结构、循环结构、伪“选择结构”用法实例分析
Jan 09 Python
jupyter notebook oepncv 显示一张图像的实现
Apr 24 Python
Django如何批量创建Model
Sep 01 Python
Python 实现3种回归模型(Linear Regression,Lasso,Ridge)的示例
Oct 15 Python
python实现发送邮件
Mar 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
php Ubb代码编辑器函数代码
2012/07/05 PHP
PHP中is_file不能替代file_exists的理由
2014/03/04 PHP
smarty模板引擎基础知识入门
2015/03/30 PHP
jQuery 幻灯片插件(带缩略图功能)
2011/01/24 Javascript
ANGULARJS中用NG-BIND指令实现单向绑定的例子
2014/12/08 Javascript
Yii2使用Bootbox插件实现自定义弹窗
2015/04/02 Javascript
JavaScript保存并运算页面中数字类型变量的写法
2015/07/06 Javascript
js判断请求的url是否可访问,支持跨域判断的实现方法
2016/09/17 Javascript
微信小程序 Page()函数详解
2016/10/17 Javascript
用jQuery旋转插件jqueryrotate制作转盘抽奖
2017/02/10 Javascript
ionic 自定义弹框效果
2017/06/27 Javascript
node.js中路由,中间件,ge请求和post请求的参数详解
2017/12/26 Javascript
JavaScript中this关键字用法实例分析
2018/08/24 Javascript
vue+node实现图片上传及预览的示例方法
2018/11/22 Javascript
Node.js 实现远程桌面监控的方法步骤
2019/07/02 Javascript
在layui中使用form表单监听ajax异步验证注册的实例
2019/09/03 Javascript
vue router 传参获取不到的解决方式
2019/11/13 Javascript
python数据结构之图的实现方法
2015/07/08 Python
Python温度转换实例分析
2018/01/17 Python
解决pycharm 误删掉项目文件的处理方法
2018/10/22 Python
详解Python的三种可变参数
2019/05/08 Python
一篇文章弄懂Python中所有数组数据类型
2019/06/23 Python
用python给自己做一款小说阅读器过程详解
2019/07/11 Python
keras在构建LSTM模型时对变长序列的处理操作
2020/06/29 Python
Shopee马来西亚:随拍即卖,最佳行动电商拍卖平台
2017/06/05 全球购物
德国柯吉澳趣味家居:Koziol
2017/08/24 全球购物
美国巧克力喷泉品牌:Sephra
2019/05/05 全球购物
Feelunique中文官网:欧洲最大化妆品零售电商
2020/07/10 全球购物
《望洞庭》教学反思
2014/02/16 职场文书
个人求职信范文
2014/05/24 职场文书
个人安全生产责任书
2014/07/28 职场文书
初中生考试作弊检讨书
2014/12/14 职场文书
撤诉状格式范本
2015/05/19 职场文书
爱国主义教育基地观后感
2015/06/18 职场文书
Django给表单添加honeypot验证增加安全性
2021/05/06 Python
oracle覆盖导入dmp文件的2种方法
2021/05/21 Oracle