Python Matplotlib绘制条形图的全过程


Posted in Python onOctober 24, 2021

条形图

条形图具有丰富的表现形式,常见的类型包括单组条形图,多组条形图,堆积条形图和对称条形图等。

单组条形图

条形图的每种表现形式都可以绘制成垂直条形图或水平条形图,以单组条形图的两种绘制方式为例。

垂直条形图

import matplotlib.pyplot as plt
data = [10., 20., 5., 15.]
plt.bar(range(len(data)), data)
plt.show()

Python Matplotlib绘制条形图的全过程

Tips:plt.plot()函数的作用是:接收两个参数,包括每个条形的x坐标和每个条行的高度。

通过可选参数width,pyplot.bar()提供了一种控制条形图中条状宽度的方法:

import matplotlib.pyplot as plt
data = [10., 20., 5., 15.]
plt.bar(range(len(data)), data, width=0.5)
plt.show()

Python Matplotlib绘制条形图的全过程

水平条形图

如果更喜欢水平条形外观,就可以使用plt.barh()函数,在用法方面与plt.bar()基本相同,但是修改条形宽度(或者在水平条形图中应该称为高度)的参数需要使用height:

import matplotlib.pyplot as plt
data = [10., 20., 5., 15.]
plt.barh(range(len(data)), data, height=0.5)
plt.show()

Python Matplotlib绘制条形图的全过程

多组条形图

当需要比较不同年份相应季度的销量等此类需求时,我们可能需要多组条形图。

import numpy as np
import matplotlib.pyplot as plt
data = [[10., 20., 30., 20.],[40., 25., 53., 18.],[6., 22., 52., 19.]]
x = np.arange(4)
plt.bar(x + 0.00, data[0], color = 'b', width = 0.25)
plt.bar(x + 0.25, data[1], color = 'g', width = 0.25)
plt.bar(x + 0.50, data[2], color = 'r', width = 0.25)
plt.show()

Python Matplotlib绘制条形图的全过程

堆积条形图

通过使用plt.bar()函数中的可选参数,可以绘制堆积条形图。

import matplotlib.pyplot as plt
y_1 = [3., 25., 45., 22.]
y_2 = [6., 25., 50., 25.]
x = range(4)
plt.bar(x, y_1, color = 'b')
plt.bar(x, y_2, color = 'r', bottom = y_1)
plt.show()

Python Matplotlib绘制条形图的全过程

Tips:plt.bar()函数的可选参数bottom允许指定条形图的起始值。

可以结合for循环,利用延迟呈现机制堆叠更多的条形:

import numpy as np
import matplotlib.pyplot as plt
data = np.array([[5., 30., 45., 22.], [5., 25., 50., 20.], [1., 2., 1., 1.]])
x = np.arange(data.shape[1])
for i in range(data.shape[0]):
    plt.bar(x, data[i], bottom = np.sum(data[:i], axis = 0))
plt.show()

Python Matplotlib绘制条形图的全过程

对称条形图

一个简单且有用的技巧是对称绘制两个条形图。例如想要绘制不同年龄段的男性与女性数量的对比:

import numpy as np
import matplotlib.pyplot as plt
w_pop = np.array([5., 30., 45., 22.])
m_pop = np.array( [5., 25., 50., 20.])
x = np.arange(4)
plt.barh(x, w_pop)
plt.barh(x, -m_pop)
plt.show()

Python Matplotlib绘制条形图的全过程

图中女性人口的条形图照常绘制。然而,男性人口的条形图的条形图的条形图向左延伸,而不是向右延伸。可以使用数据的负值来快速实现对称条形图的绘制。

总结

到此这篇关于Python Matplotlib绘制条形图的文章就介绍到这了,更多相关Python Matplotlib绘制条形图内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python的subprocess模块总结
Nov 07 Python
python实现从ftp服务器下载文件的方法
Apr 30 Python
Python入门_浅谈字符串的分片与索引、字符串的方法
May 16 Python
python列表每个元素同增同减和列表元素去空格的实例
Jul 20 Python
python模式 工厂模式原理及实例详解
Feb 11 Python
解决Jupyter NoteBook输出的图表太小看不清问题
Apr 16 Python
python os模块常用的29种方法使用详解
Jun 02 Python
Python项目打包成二进制的方法
Dec 30 Python
python实现经典排序算法的示例代码
Feb 07 Python
Python数据类型最全知识总结
May 31 Python
Python道路车道线检测的实现
Jun 27 Python
asyncio异步编程之Task对象详解
Mar 13 Python
python基础之模块的导入
python基础之文件操作
python基础之错误和异常处理
Python中递归以及递归遍历目录详解
Oct 24 #Python
python基础之函数的定义和调用
python 标准库原理与用法详解之os.path篇
Oct 24 #Python
Python干货实战之八音符酱小游戏全过程详解
You might like
php htmlspecialchars加强版
2010/02/16 PHP
CodeIgniter框架数据库事务处理的设计缺陷和解决方案
2014/07/25 PHP
学习php设计模式 php实现状态模式
2015/12/07 PHP
PHP的Yii框架中行为的定义与绑定方法讲解
2016/03/18 PHP
gearman管理工具GearmanManager的安装与php使用方法示例
2020/02/27 PHP
js substr、substring和slice使用说明小记
2011/09/15 Javascript
javascript代码编写需要注意的7个小细节小结
2011/09/21 Javascript
mailto的使用技巧分享
2012/12/21 Javascript
JS验证邮箱格式是否正确的代码
2013/12/05 Javascript
file控件选择上传文件确定后触发的js事件是哪个
2014/03/17 Javascript
JavaScript实现文字跟随鼠标特效
2015/08/06 Javascript
javascript设计模式之module(模块)模式
2016/08/19 Javascript
Angular开发者指南之入门介绍
2017/03/05 Javascript
Angular实现预加载延迟模块的示例
2017/10/12 Javascript
bootstrap轮播模板使用方法详解
2017/11/17 Javascript
jquery3和layui冲突导致使用layui.layer.full弹出全屏iframe窗口时高度152px问题
2019/05/12 jQuery
jQuery实现的记住帐号密码功能完整示例
2019/08/03 jQuery
vue+elementUI中表格高亮或字体颜色改变操作
2020/11/02 Javascript
python snownlp情感分析简易demo(分享)
2017/06/04 Python
opencv改变imshow窗口大小,窗口位置的方法
2018/04/02 Python
numpy中的delete删除数组整行和整列的实例
2018/05/09 Python
pycharm下查看python的变量类型和变量内容的方法
2018/06/26 Python
python开发之anaconda以及win7下安装gensim的方法
2019/07/05 Python
基于Python检测动态物体颜色过程解析
2019/12/04 Python
python常用运维脚本实例小结
2020/02/14 Python
Django REST Swagger实现指定api参数
2020/07/07 Python
Python 实现微信自动回复的方法
2020/09/11 Python
如何使用 Flask 做一个评论系统
2020/11/27 Python
Django集成MongoDB实现过程解析
2020/12/01 Python
Python 实现PS滤镜中的径向模糊特效
2020/12/03 Python
澳洲在线厨具商店:Kitchen Style
2018/05/05 全球购物
Ibatis如何使用动态表名
2015/07/12 面试题
用C或者C++语言实现SOCKET通信
2015/02/24 面试题
酒店保安领班职务说明书
2014/03/04 职场文书
出纳2015年度工作总结范文
2015/10/14 职场文书
2016春季幼儿园开学寄语
2015/12/03 职场文书