python使用matplotlib绘制柱状图教程


Posted in Python onFebruary 08, 2017

Matplotlib的概念这里就不多介绍了,关于绘图库Matplotlib的安装方法:点击这里

小编之前也和大家分享过python使用matplotlib实现的折线图和制饼图效果,感兴趣的朋友们也可以点击查看,下面来看看python使用matplotlib绘制柱状图的方法吧,具体如下:

1. 基本的柱状图

import matplotlib.pyplot as plt

data = [5, 20, 15, 25, 10]

plt.bar(range(len(data)), data)
plt.show()

python使用matplotlib绘制柱状图教程

plt.bar函数签名为:

bar(left, height, width=0.8, bottom=None, **kwargs)

事实上,left,height,width,bottom这四个参数确定了柱体的位置和大小。默认情况下,left为柱体的居中位置(可以通过align参数来改变left值的含义),即:

  • (left - width / 2, bottom)为左下角位置
  • (left + width / 2, bottom + height)为右上角位置

例如:

import matplotlib.pyplot as plt

data = [5, 20, 15, 25, 10]

plt.bar([0.3, 1.7, 4, 6, 7], data, width=0.6, bottom=[10, 0, 5, 0, 5])
plt.show()

python使用matplotlib绘制柱状图教程

2. 设置柱体样式

(1)颜色

通过facecolor(或fc)关键字参数可以设置柱体颜色,例如:

import matplotlib.pyplot as plt

data = [5, 20, 15, 25, 10]

plt.bar(range(len(data)), data, fc='g')
plt.show()

python使用matplotlib绘制柱状图教程

通过color关键字参数 可以一次性设置多个颜色,例如:

import matplotlib.pyplot as plt

data = [5, 20, 15, 25, 10]

plt.bar(range(len(data)), data, color='rgb') # or `color=['r', 'g', 'b']`
plt.show()

python使用matplotlib绘制柱状图教程

(2)描边

相关的关键字参数为:

  • edgecolor 或 ec
  • linestyle 或 ls
  • linewidth 或 lw

例如:

import matplotlib.pyplot as plt

data = [5, 20, 15, 25, 10]

plt.bar(range(len(data)), data, ec='r', ls='--', lw=2)
plt.show()

python使用matplotlib绘制柱状图教程

(3)填充

hatch关键字可用来设置填充样式,可取值为:/, \, |, -, +, x, o, O, ., *。例如:

import matplotlib.pyplot as plt

data = [5, 20, 15, 25, 10]

plt.bar(range(len(data)), data, ec='k', lw=1, hatch='o')
plt.show()

python使用matplotlib绘制柱状图教程 

3. 设置tick label

import matplotlib.pyplot as plt

data = [5, 20, 15, 25, 10]
labels = ['Tom', 'Dick', 'Harry', 'Slim', 'Jim']

plt.bar(range(len(data)), data, tick_label=labels)
plt.show()

python使用matplotlib绘制柱状图教程

4. 堆叠柱状图

通过bottom参数,可以绘制堆叠柱状图。例如:

import numpy as np
import matplotlib.pyplot as plt

size = 5
x = np.arange(size)
a = np.random.random(size)
b = np.random.random(size)

plt.bar(x, a, label='a')
plt.bar(x, b, bottom=a, label='b')
plt.legend()
plt.show()

python使用matplotlib绘制柱状图教程

5. 并列柱状图

绘制并列柱状图与堆叠柱状图类似,都是绘制多组柱体,只需要控制好每组柱体的位置和大小即可。例如:

import numpy as np
import matplotlib.pyplot as plt

size = 5
x = np.arange(size)
a = np.random.random(size)
b = np.random.random(size)
c = np.random.random(size)

total_width, n = 0.8, 3
width = total_width / n
x = x - (total_width - width) / 2

plt.bar(x, a, width=width, label='a')
plt.bar(x + width, b, width=width, label='b')
plt.bar(x + 2 * width, c, width=width, label='c')
plt.legend()
plt.show()

python使用matplotlib绘制柱状图教程

6. 条形图

使用barh方法绘制条形图。例如:

import matplotlib.pyplot as plt

data = [5, 20, 15, 25, 10]

plt.barh(range(len(data)), data)
plt.show()

python使用matplotlib绘制柱状图教程

plt.barh方法的签名为:

barh(bottom, width, height=0.8, left=None, **kwargs)

可以看到与plt.bar方法类似。因此堆积条形图和并列条形图的画法与前面类似,不做赘述。

7. 正负条形图

import numpy as np
import matplotlib.pyplot as plt

a = np.array([5, 20, 15, 25, 10])
b = np.array([10, 15, 20, 15, 5])

plt.barh(range(len(a)), a)
plt.barh(range(len(b)), -b)
plt.show()

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家学习或者使用python能带来一定的帮助,如果有疑问大家可以留言交流。

Python 相关文章推荐
python实现bitmap数据结构详解
Feb 17 Python
python使用ctypes模块调用windowsapi获取系统版本示例
Apr 17 Python
python根据文件大小打log日志
Oct 09 Python
Python实现简单的可逆加密程序实例
Mar 05 Python
整理Python中的赋值运算符
May 13 Python
利用PyInstaller将python程序.py转为.exe的方法详解
May 03 Python
python2.7实现FTP文件下载功能
Apr 15 Python
python+opencv实现车牌定位功能(实例代码)
Dec 24 Python
Selenium基于PIL实现拼接滚动截图
Apr 10 Python
Python sklearn中的.fit与.predict的用法说明
Jun 28 Python
python opencv pytesseract 验证码识别的实现
Aug 28 Python
python 使用openpyxl读取excel数据
Feb 18 Python
Python实现简单的多任务mysql转xml的方法
Feb 08 #Python
python使用matplotlib绘制折线图教程
Feb 08 #Python
关于Python中Inf与Nan的判断问题详解
Feb 08 #Python
python3.5实现socket通讯示例(TCP)
Feb 07 #Python
Python中字典的setdefault()方法教程
Feb 07 #Python
Python连接数据库学习之DB-API详解
Feb 07 #Python
使用Python中的tkinter模块作图的方法
Feb 07 #Python
You might like
PHP概述.
2006/10/09 PHP
基于PHP一些十分严重的缺陷详解
2013/06/03 PHP
PHP实现HTML生成PDF文件的方法
2014/11/07 PHP
基于CakePHP实现的简单博客系统实例
2015/06/28 PHP
浅谈PHP中关于foreach使用引用变量的坑
2016/11/14 PHP
详解EventDispatcher事件分发组件
2016/12/25 PHP
快速解决jquery之get缓存问题的最简单方法介绍
2013/12/19 Javascript
JS数组去重与取重的示例代码
2014/01/24 Javascript
Eclipse去除js(JavaScript)验证错误
2014/02/11 Javascript
js style动态设置table高度
2014/10/21 Javascript
jQuery构造函数init参数分析续
2015/05/13 Javascript
JavaSacript中charCodeAt()方法的使用详解
2015/06/05 Javascript
跟我学习javascript的异步脚本加载
2015/11/20 Javascript
JavaScript原生对象常用方法总结(推荐)
2016/05/13 Javascript
vue绑定设置属性的多种方式(5)
2017/08/16 Javascript
vue实现div拖拽互换位置
2020/07/29 Javascript
Vue的click事件防抖和节流处理详解
2019/11/13 Javascript
JS 设计模式之:单例模式定义与实现方法浅析
2020/05/06 Javascript
python安装与使用redis的方法
2016/04/19 Python
利用numpy实现一、二维数组的拼接简单代码示例
2017/12/15 Python
JS设计模式之责任链模式实例详解
2018/02/03 Python
解决Python 爬虫URL中存在中文或特殊符号无法请求的问题
2018/05/11 Python
pytorch nn.Conv2d()中的padding以及输出大小方式
2020/01/10 Python
CSS3 Calc实现滚动条出现页面不跳动问题
2017/09/14 HTML / CSS
Halston Heritage官网:简洁的日装,稍显奢华的晚装
2018/11/20 全球购物
Hudson Jeans官网:高级精制牛仔裤
2018/11/28 全球购物
大学教师年终总结的自我评价
2013/10/29 职场文书
大学毕业生个人自荐信范文
2014/01/08 职场文书
青年文明号事迹材料
2014/01/18 职场文书
咖啡店创业计划书范文
2014/09/15 职场文书
前台岗位职责范本
2015/04/16 职场文书
最新的离婚协议书范本!
2019/07/02 职场文书
使用Spring处理x-www-form-urlencoded方式
2021/11/02 Java/Android
前端实现滑动按钮AJAX与后端交互的示例代码
2022/02/24 Javascript
win11无法登录onedrive错误代码0x8004def7怎么办 ?
2022/04/05 数码科技
Redis实现一个账号只能登录一个设备
2022/04/19 Redis