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网络编程学习笔记(二):socket建立网络客户端
Jun 09 Python
详解python并发获取snmp信息及性能测试
Mar 27 Python
python 统计列表中不同元素的数量方法
Jun 29 Python
Python多线程原理与用法实例剖析
Jan 22 Python
Python递归函数实例讲解
Feb 27 Python
Python学习笔记之读取文件、OS模块、异常处理、with as语法示例
Jun 04 Python
pandas 使用均值填充缺失值列的小技巧分享
Jul 04 Python
对python中的*args与**kwgs的含义与作用详解
Aug 28 Python
python实现简易学生信息管理系统
Apr 05 Python
Python树莓派学习笔记之UDP传输视频帧操作详解
Nov 15 Python
Python for i in range ()用法详解
Sep 18 Python
python已协程方式处理任务实现过程
Dec 27 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递归函数返回值使用方法
2013/02/18 PHP
php+Mysqli利用事务处理转账问题实例
2015/02/11 PHP
php实现在服务器上创建目录的方法
2015/03/16 PHP
PHP中读取文件的几个方法总结(推荐)
2016/06/03 PHP
php array_multisort 对数组进行排序详解及实例代码
2016/10/27 PHP
php 数组处理函数extract详解及实例代码
2016/11/23 PHP
Thinkphp5框架实现获取数据库数据到视图的方法
2019/08/14 PHP
兼容多浏览器的iframe自适应高度(ie8 、谷歌浏览器4.0和 firefox3.5.3)
2009/11/04 Javascript
Javascript 变量作用域 两个可能会被忽略的小特性
2010/03/23 Javascript
requireJS使用指南
2016/04/27 Javascript
Adapter适配器模式在JavaScript设计模式编程中的运用分析
2016/05/18 Javascript
AngularJs 延时器、计时器实例代码
2017/09/16 Javascript
Nodejs+angularjs结合multiparty实现多图片上传的示例代码
2017/09/29 NodeJs
jquery实现侧边栏左右伸缩效果的示例
2017/12/19 jQuery
JavaScript常用工具方法封装
2019/02/12 Javascript
node 文件上传接口的转发的实现
2019/09/23 Javascript
JS回调函数深入理解
2019/10/16 Javascript
jquery实现抽奖功能
2020/10/22 jQuery
解决Ant Design Modal内嵌Form表单initialValue值不动态更新问题
2020/10/29 Javascript
js实现验证码干扰(动态)
2021/02/23 Javascript
[58:18]2018DOTA2亚洲邀请赛3月29日 小组赛B组 iG VS Mineski
2018/03/30 DOTA
Cython 三分钟入门教程
2009/09/17 Python
python中二维阵列的变换实例
2014/10/09 Python
Python编程实现生成特定范围内不重复多个随机数的2种方法
2017/04/14 Python
python3中获取文件当前绝对路径的两种方法
2018/04/26 Python
Python 面试中 8 个必考问题
2018/11/16 Python
对Python w和w+权限的区别详解
2019/01/23 Python
Python常用模块之requests模块用法分析
2019/05/15 Python
python装饰器使用实例详解
2019/12/14 Python
Python with语句和过程抽取思想
2019/12/23 Python
Python Tornado核心及相关原理详解
2020/06/24 Python
python实现简单的tcp 文件下载
2020/09/16 Python
百日安全生产活动总结
2014/07/05 职场文书
中国合伙人观后感
2015/06/02 职场文书
sql通过日期判断年龄函数的示例代码
2021/07/16 SQL Server
Python 多线程处理任务实例
2021/11/07 Python