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抓取需要登录网站数据的方法详解
May 21 Python
Python中关键字global和nonlocal的区别详解
Sep 03 Python
更新pip3与pyttsx3文字语音转换的实现方法
Aug 08 Python
基于Python实现剪切板实时监控方法解析
Sep 11 Python
Pycharm小白级简单使用教程
Jan 08 Python
Python使用requests xpath 并开启多线程爬取西刺代理ip实例
Mar 06 Python
python针对Oracle常见查询操作实例分析
Apr 30 Python
详解Python多线程下的list
Jul 03 Python
Python如何读写CSV文件
Aug 13 Python
python爬虫爬取网页数据并解析数据
Sep 18 Python
Python通过字典映射函数实现switch
Nov 06 Python
Pandas中两个dataframe的交集和差集的示例代码
Dec 13 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 在5.1.* 和5.2.*之间 PDO数据库操作中的不同之处小结
2012/03/07 PHP
php中的常用魔术方法总结
2013/08/02 PHP
理解PHP中的stdClass类
2014/04/18 PHP
ThinkPHP实现图片上传操作的方法详解
2017/05/08 PHP
如何用js控制css中的float的代码
2007/08/16 Javascript
js用图作提交按钮或超连接
2008/03/26 Javascript
js模拟类继承小例子
2010/07/17 Javascript
jquery validate添加自定义验证规则(验证邮箱 邮政编码)
2013/12/04 Javascript
jquery实现checkbox 全选/全不选的通用写法
2014/02/22 Javascript
jQuery $.extend()用法总结
2014/06/15 Javascript
node.js中的fs.readdir方法使用说明
2014/12/17 Javascript
JavaScript优化专题之Loading and Execution加载和运行
2016/01/20 Javascript
关于获取DIV内部内容报错的原因分析及解决办法
2016/01/29 Javascript
javaScript中的原型解析【推荐】
2016/05/05 Javascript
JQuery 的跨域方法推荐_可跨任何网站
2016/05/18 Javascript
JavaScript获取短信验证码(周期性)
2016/12/29 Javascript
详解js的异步编程技术的方法
2017/02/09 Javascript
移动端手指放大缩小插件与js源码
2017/05/22 Javascript
react系列从零开始_简单谈谈react
2017/07/06 Javascript
Vue父子组件传值的一些坑
2020/09/16 Javascript
python数组过滤实现方法
2015/07/27 Python
Python中turtle作图示例
2017/11/15 Python
mac安装pytorch及系统的numpy更新方法
2018/07/26 Python
centos6.5安装python3.7.1之后无法使用pip的解决方案
2019/02/14 Python
pymysql模块的使用(增删改查)详解
2019/09/09 Python
python 监控logcat关键字功能
2020/09/04 Python
毕业生的自我评价范文
2013/12/31 职场文书
秋季运动会加油稿200字
2014/01/11 职场文书
道德大讲堂实施方案
2014/05/14 职场文书
机械工程及其自动化专业求职信
2014/08/08 职场文书
白酒营销策划方案
2014/08/17 职场文书
六查六看自检自查剖析材料
2014/10/14 职场文书
工程主管竞聘书
2015/09/15 职场文书
解决Golang time.Parse和time.Format的时区问题
2021/04/29 Golang
JavaScript实现简单图片切换
2021/04/29 Javascript
python中 .npy文件的读写操作实例
2022/04/14 Python