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 相关文章推荐
django实现同一个ip十分钟内只能注册一次的实例
Nov 03 Python
python实战之实现excel读取、统计、写入的示例讲解
May 02 Python
Python使用Dijkstra算法实现求解图中最短路径距离问题详解
May 16 Python
python3读取excel文件只提取某些行某些列的值方法
Jul 10 Python
使用python批量读取word文档并整理关键信息到excel表格的实例
Nov 07 Python
Pyqt QImage 与 np array 转换方法
Jun 27 Python
Python+OpenCV实现实时眼动追踪的示例代码
Nov 11 Python
python turtle 绘制太极图的实例
Dec 18 Python
python文件绝对路径写法介绍(windows)
Dec 25 Python
NumPy排序的实现
Jan 21 Python
python GUI库图形界面开发之PyQt5表格控件QTableView详细使用方法与实例
Mar 01 Python
python与idea的集成的实现
Nov 20 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中的正则表达式函数介绍
2012/02/27 PHP
php简单开启gzip压缩方法(zlib.output_compression)
2013/04/13 PHP
Session服务器配置指南与使用经验的深入解析
2013/06/17 PHP
PHP计算百度地图两个GPS坐标之间距离的方法
2015/01/09 PHP
PHP的Yii框架的常用日志操作总结
2015/12/08 PHP
Joomla语言翻译类Jtext用法分析
2016/05/05 PHP
jquery 子窗口操作父窗口的代码
2009/09/21 Javascript
最常用的12种设计模式小结
2011/08/09 Javascript
详解Node.js包的工程目录与NPM包管理器的使用
2016/02/16 Javascript
即将发布的jQuery 3 有哪些新特性
2016/04/14 Javascript
js对象浅拷贝和深拷贝详解
2016/09/05 Javascript
angularJS+requireJS实现controller及directive的按需加载示例
2017/02/20 Javascript
jQuery插件echarts设置折线图中折线线条颜色和折线点颜色的方法
2017/03/03 Javascript
详解nodejs微信公众号开发——2.自动回复
2017/04/10 NodeJs
分享Bootstrap简单表格、表单、登录页面
2017/08/04 Javascript
深入浅析javascript继承体系
2017/10/23 Javascript
vue2.0 实现导航守卫(路由守卫)
2018/05/21 Javascript
JavaScript引用类型Array实例分析
2018/07/24 Javascript
Ant Design Vue table中列超长显示...并加提示语的实例
2020/10/31 Javascript
python远程登录代码
2008/04/29 Python
Python基于select实现的socket服务器
2016/04/13 Python
TensorFlow实现Softmax回归模型
2018/03/09 Python
Tensorflow 查看变量的值方法
2018/06/14 Python
django url到views参数传递的实例
2019/07/19 Python
浅谈如何使用python抓取网页中的动态数据实现
2020/08/17 Python
一款利用纯css3实现的超炫3D表单的实例教程
2014/12/01 HTML / CSS
逼真的HTML5树叶飘落动画
2016/03/01 HTML / CSS
BONIA波尼亚新加坡官网:皮革手袋,鞋类和配件
2016/08/25 全球购物
绢花、人造花和人造花卉:BLOOM
2019/08/07 全球购物
东南亚冒险旅行与活动:Adventoro
2019/10/16 全球购物
房屋买卖协议书
2014/04/10 职场文书
工伤私了协议书范本
2014/11/24 职场文书
交通事故被告答辩状
2015/05/22 职场文书
详解JVM系列之内存模型
2021/06/10 Javascript
python_tkinter事件类型详情
2022/03/20 Python
golang为什么要统一错误处理
2022/04/03 Golang