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编程效率
Feb 16 Python
Python常用知识点汇总
May 08 Python
Python 爬取携程所有机票的实例代码
Jun 11 Python
Python从文件中读取数据的方法讲解
Feb 14 Python
python3实现小球转动抽奖小游戏
Apr 15 Python
Python3环境安装Scrapy爬虫框架过程及常见错误
Jul 12 Python
python实现大学人员管理系统
Oct 25 Python
解决tensorflow由于未初始化变量而导致的错误问题
Jan 06 Python
Python API 操作Hadoop hdfs详解
Jun 06 Python
python和php哪个容易学
Jun 19 Python
OpenCV4.1.0+VS2017环境配置的方法步骤
Jul 09 Python
Django限制API访问频率常用方法解析
Oct 12 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和javascript之间变量的传递实现代码
2012/12/19 PHP
基于php设计模式中工厂模式详细介绍
2013/05/15 PHP
9条PHP编程小知识及易犯的小错误
2015/01/22 PHP
浅谈PHP值mysql操作类
2016/06/29 PHP
PHP验证码类ValidateCode解析
2017/01/07 PHP
php+js实现的拖动滑块验证码验证表单操作示例【附源码下载】
2020/05/27 PHP
js中运算符&& 和 || 的使用记录
2014/08/21 Javascript
javascript简单实现类似QQ头像弹出效果的方法
2015/08/03 Javascript
JavaScript多线程详解
2015/08/12 Javascript
jquery遍历函数siblings()用法实例
2015/12/24 Javascript
JavaScript的removeChild()函数用法详解
2015/12/27 Javascript
javascript中arguments,callee,caller详解
2016/03/16 Javascript
Easyui 之 Treegrid 笔记
2016/04/29 Javascript
jQuery UI仿淘宝搜索下拉列表功能
2017/01/10 Javascript
关于javascript作用域的常见面试题分享
2017/06/18 Javascript
使用Angular-CLI构建NPM包的方法
2018/09/07 Javascript
微信小程序仿知乎实现评论留言功能
2018/11/28 Javascript
Vue 报错TypeError: this.$set is not a function 的解决方法
2018/12/17 Javascript
JavaScript创建对象的四种常用模式实例分析
2019/01/11 Javascript
es5 类与es6中class的区别小结
2020/11/09 Javascript
element-plus一个vue3.xUI框架(element-ui的3.x 版初体验)
2020/12/02 Vue.js
通过vue.extend实现消息提示弹框的方法记录
2021/01/07 Vue.js
使用FastCGI部署Python的Django应用的教程
2015/07/22 Python
socket + select 完成伪并发操作的实例
2017/08/15 Python
pandas数据分组和聚合操作方法
2018/04/11 Python
Python处理CSV与List的转换方法
2018/04/19 Python
python+opencv实现阈值分割
2018/12/26 Python
python pygame实现挡板弹球游戏
2019/11/25 Python
使用Python进行防病毒免杀解析
2019/12/13 Python
详解基于Jupyter notebooks采用sklearn库实现多元回归方程编程
2020/03/25 Python
大学学习个人的自我评价
2014/02/18 职场文书
巴西世界杯32强口号
2014/06/05 职场文书
应届生自荐书
2014/06/23 职场文书
就业意向书
2014/07/29 职场文书
党员创先争优心得体会
2014/09/11 职场文书
工程款申请报告
2015/05/15 职场文书