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中urllib2模块的8个使用细节分享
Jan 01 Python
Python标准库defaultdict模块使用示例
Apr 28 Python
python制作一个桌面便签软件
Aug 09 Python
实例解析Python中的__new__特殊方法
Jun 02 Python
python中执行shell的两种方法总结
Jan 10 Python
Python数据分析之获取双色球历史信息的方法示例
Feb 03 Python
详解python的argpare和click模块小结
Mar 31 Python
Python Pandas对缺失值的处理方法
Sep 27 Python
Python pygame绘制文字制作滚动文字过程解析
Dec 12 Python
使用pytorch和torchtext进行文本分类的实例
Jan 08 Python
解决Keras中Embedding层masking与Concatenate层不可调和的问题
Jun 18 Python
TensorFlow的环境配置与安装教程详解(win10+GeForce GTX1060+CUDA 9.0+cuDNN7.3+tensorflow-gpu 1.12.0+python3.5.5)
Jun 22 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
[EPIC] Larva vs Flash ZvT @ Crossing Field [2017-10-09]
2020/03/17 星际争霸
php 获得汉字拼音首字母的函数
2009/08/01 PHP
php数组操作之键名比较与差集、交集赋值的方法
2014/11/10 PHP
Discuz不使用插件实现简单的打赏功能
2019/03/21 PHP
JavaScript实际应用:innerHTMl和确认提示的使用
2006/06/22 Javascript
两个比较有用的Javascript工具函数代码
2010/02/17 Javascript
实用的Jquery选项卡TAB示例代码
2013/08/28 Javascript
前端开发过程中浏览器版本的两种判定方法
2013/10/30 Javascript
js光标定位文本框回车表单提交问题的解决方法
2015/05/11 Javascript
Jquery实现动态切换图片的方法
2015/05/18 Javascript
jquery动感漂浮导航菜单代码分享
2020/04/15 Javascript
如何屏蔽防止别的网站嵌入框架代码
2015/08/24 Javascript
基于JavaScript实现随机颜色输入框
2016/12/10 Javascript
jQuery查找和过滤_动力节点节点Java学院整理
2017/07/04 jQuery
浅谈Node.js之异步流控制
2017/10/25 Javascript
React.js绑定this的5种方法(小结)
2018/06/05 Javascript
微信小程序实现运动步数排行功能(可删除)
2018/07/05 Javascript
Vue实战教程之仿肯德基宅急送App
2019/07/19 Javascript
Paypal支付不完全指北
2020/06/04 Javascript
Python 的 Socket 编程
2015/03/24 Python
Python的装饰器用法学习笔记
2016/06/24 Python
把csv文件转化为数组及数组的切片方法
2018/07/04 Python
Python 3.8新特征之asyncio REPL
2019/05/28 Python
python输出带颜色字体实例方法
2019/09/01 Python
使用python批量转换文件编码为UTF-8的实现
2020/04/03 Python
python 数据分析实现长宽格式的转换
2020/05/18 Python
详解HTML5常用的语义化标签
2019/09/27 HTML / CSS
异常和异常类的概念
2014/09/12 面试题
船舶专业个人求职信范文
2014/01/02 职场文书
村委会主任先进事迹
2014/01/15 职场文书
贫困证明模板(3篇)
2014/09/16 职场文书
生产设备维护保养制度
2015/08/06 职场文书
《吃水不忘挖井人》教学反思
2016/02/22 职场文书
学生早退检讨书(范文)
2019/08/19 职场文书
Mysql基础之常见函数
2021/04/22 MySQL
Win10加载疑难解答时出错发生意外错误的解决方法
2022/07/07 数码科技