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实现的彩票机选器实例
Jun 17 Python
python代码 if not x: 和 if x is not None: 和 if not x is None:使用介绍
Sep 21 Python
Python开发的HTTP库requests详解
Aug 29 Python
python实现微信接口(itchat)详细介绍
Oct 23 Python
pandas 实现将重复表格去重,并重新转换为表格的方法
Apr 18 Python
了解不常见但是实用的Python技巧
May 23 Python
PyCharm 无法 import pandas 程序卡住的解决方式
Mar 09 Python
python 使用while循环输出*组成的菱形实例
Apr 12 Python
python框架flask入门之环境搭建及开启调试
Jun 07 Python
Django URL参数Template反向解析
Nov 24 Python
pymongo insert_many 批量插入的实例
Dec 05 Python
python wsgiref源码解析
Feb 06 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
destoon实现调用自增数字从1开始的方法
2014/08/21 PHP
PHP函数func_num_args用法实例分析
2015/12/07 PHP
Symfony2创建基于域名的路由相关示例
2016/11/14 PHP
laravel请求参数校验方法
2019/10/10 PHP
jQuery Ajax之$.get()方法和$.post()方法
2009/10/12 Javascript
JavaScript小技巧 2.5 则
2010/09/12 Javascript
js和html5实现手机端刮刮卡抽奖效果完美兼容android/IOS
2013/11/18 Javascript
js中定义一个变量并判断其是否为空的方法
2014/05/13 Javascript
一款基于jQuery的图片场景标注提示弹窗特效
2015/01/05 Javascript
使用jQuery获得内容以及内容的属性
2015/02/26 Javascript
jQuery过滤特殊字符及JS字符串转为数字
2016/05/26 Javascript
微信小程序 Template详解及简单实例
2017/01/05 Javascript
WebPack基础知识详解
2017/01/16 Javascript
ES6正则表达式的一些新功能总结
2017/05/09 Javascript
详解Node.js 命令行程序开发教程
2017/06/07 Javascript
AngularJS日程表案例详解
2017/08/15 Javascript
JavaScript数据结构与算法之检索算法示例【二分查找法、计算重复次数】
2019/02/22 Javascript
js 计算图片内点个数的示例代码
2019/04/04 Javascript
jQuery 淡入/淡出效果函数用法分析
2020/05/19 jQuery
JS实现audio音频剪裁剪切复制播放与上传(步骤详解)
2020/07/28 Javascript
Python使用MySQLdb for Python操作数据库教程
2014/10/11 Python
Python模块搜索概念介绍及模块安装方法介绍
2015/06/03 Python
python实现百度语音识别api
2018/04/10 Python
浅谈pytorch和Numpy的区别以及相互转换方法
2018/07/26 Python
详解django自定义中间件处理
2018/11/21 Python
浅析PEP570新语法: 只接受位置参数
2019/10/15 Python
spyder 在控制台(console)执行python文件,debug python程序方式
2020/04/20 Python
python和php哪个容易学
2020/06/19 Python
基于Python实现天天酷跑功能
2021/01/06 Python
英国灯具和灯泡网上商店:Lights.co.uk
2018/02/02 全球购物
Ruby如何创建一个线程
2013/03/10 面试题
大学生学习2014年全国两会心得体会
2014/03/12 职场文书
学校周年庆活动方案
2014/08/22 职场文书
机关作风建设剖析材料
2014/10/11 职场文书
护士求职自荐信
2015/03/25 职场文书
go select编译期的优化处理逻辑使用场景分析
2021/06/28 Golang