在Linux下使用Python的matplotlib绘制数据图的教程


Posted in Python onJune 11, 2015

如果你想要在Linxu中获得一个高效、自动化、高质量的科学画图的解决方案,应该考虑尝试下matplotlib库。Matplotlib是基于python的开源科学测绘包,基于python软件基金会许可证发布。大量的文档和例子、集成了Python和Numpy科学计算包、以及自动化能力,是作为Linux环境中进行科学画图的可靠选择的几个原因。这个教程将提供几个用matplotlib画图的例子。
特性

  •     支持众多的图表类型,如:bar,box,contour,histogram,scatter,line plots....
  •     基于python的语法
  •     集成Numpy科学计算包
  •     数据源可以是 python 的列表、键值对和数组
  •     可定制的图表格式(坐标轴缩放、标签位置及标签内容等)
  •     可定制文本(字体,大小,位置...)
  •     支持TeX格式(等式,符号,希腊字体...)
  •     与IPython相兼容(允许在 python shell 中与图表交互)
  •     自动化(使用 Python 循环创建图表)
  •     用Python 的循环迭代生成图片
  •     保存所绘图片格式为图片文件,如:png,pdf,ps,eps,svg等

基于Python语法的matplotlib是其许多特性和高效工作流的基础。世面上有许多用于绘制高质量图的科学绘图包,但是这些包允许你直接在你的Python代码中去使用吗?除此以外,这些包允许你创建可以保存为图片文件的图片吗?Matplotlib允许你完成所有的这些任务。从而你可以节省时间,使用它你能够花更少的时间创建更多的图片。
安装

安装Python和Numpy包是使用Matplotlib的前提。

可以通过如下命令在Debian或Ubuntu中安装Matplotlib:

$ sudo apt-get install python-matplotlib

在Fedora或CentOS/RHEL环境则可用如下命令:

$ sudo yum install python-matplotlib

Matplotlib 例子

本教程会提供几个绘图例子演示如何使用matplotlib:

  •     离散图和线性图
  •     柱状图
  •     饼状图

在这些例子中我们将用Python脚本来执行Mapplotlib命令。注意numpy和matplotlib模块需要通过import命令在脚本中进行导入。

np为nuupy模块的命名空间引用,plt为matplotlib.pyplot的命名空间引用:

import numpy as np
  import matplotlib.pyplot as plt

例1:离散和线性图

第一个脚本,script1.py 完成如下任务:

  •     创建3个数据集(xData,yData1和yData2)
  •     创建一个宽8英寸、高6英寸的图(赋值1)
  •     设置图画的标题、x轴标签、y轴标签(字号均为14)
  •     绘制第一个数据集:yData1为xData数据集的函数,用圆点标识的离散蓝线,标识为"y1 data"
  •     绘制第二个数据集:yData2为xData数据集的函数,采用红实线,标识为"y2 data"
  •     把图例放置在图的左上角
  •     保存图片为PNG格式文件

script1.py的内容如下:  

import numpy as np
  import matplotlib.pyplot as plt
   
  xData = np.arange(0, 10, 1)
  yData1 = xData.__pow__(2.0)
  yData2 = np.arange(15, 61, 5)
  plt.figure(num=1, figsize=(8, 6))
  plt.title('Plot 1', size=14)
  plt.xlabel('x-axis', size=14)
  plt.ylabel('y-axis', size=14)
  plt.plot(xData, yData1, color='b', linestyle='--', marker='o', label='y1 data')
  plt.plot(xData, yData2, color='r', linestyle='-', label='y2 data')
  plt.legend(loc='upper left')
  plt.savefig('images/plot1.png', format='png')

所画之图如下:

在Linux下使用Python的matplotlib绘制数据图的教程

例2:柱状图

第二个脚本,script2.py 完成如下任务:

  •     创建一个包含1000个随机样本的正态分布数据集。
  •     创建一个宽8英寸、高6英寸的图(赋值1)
  •     设置图的标题、x轴标签、y轴标签(字号均为14)
  •     用samples这个数据集画一个40个柱状,边从-10到10的柱状图
  •     添加文本,用TeX格式显示希腊字母mu和sigma(字号为16)
  •     保存图片为PNG格式。

script2.py代码如下:

import numpy as np
  import matplotlib.pyplot as plt
   
  mu = 0.0
  sigma = 2.0
  samples = np.random.normal(loc=mu, scale=sigma, size=1000)
  plt.figure(num=1, figsize=(8, 6))
  plt.title('Plot 2', size=14)
  plt.xlabel('value', size=14)
  plt.ylabel('counts', size=14)
  plt.hist(samples, bins=40, range=(-10, 10))
  plt.text(-9, 100, r'$\mu$ = 0.0, $\sigma$ = 2.0', size=16)
  plt.savefig('images/plot2.png', format='png')

结果见如下链接:

在Linux下使用Python的matplotlib绘制数据图的教程

例3:饼状图

第三个脚本,script3.py 完成如下任务:

  •     创建一个包含5个整数的列表
  •     创建一个宽6英寸、高6英寸的图(赋值1)
  •     添加一个长宽比为1的轴图
  •     设置图的标题(字号为14)
  •     用data列表画一个包含标签的饼状图
  •     保存图为PNG格式

脚本script3.py的代码如下:

import numpy as np
  import matplotlib.pyplot as plt
   
  data = [33, 25, 20, 12, 10]
  plt.figure(num=1, figsize=(6, 6))
  plt.axes(aspect=1)
  plt.title('Plot 3', size=14)
  plt.pie(data, labels=('Group 1', 'Group 2', 'Group 3', 'Group 4', 'Group 5'))
  plt.savefig('images/plot3.png', format='png')

结果如下链接所示:

在Linux下使用Python的matplotlib绘制数据图的教程

总结

这个教程提供了几个用matplotlib科学画图包进行画图的例子,Matplotlib是在Linux环境中用于解决科学画图的绝佳方案,表现在其无缝地和Python、Numpy连接、自动化能力,和提供多种自定义的高质量的画图产品。

Python 相关文章推荐
搞笑的程序猿:看看你是哪种Python程序员
Jun 12 Python
python解决Fedora解压zip时中文乱码的方法
Sep 18 Python
一个基于flask的web应用诞生 组织结构调整(7)
Apr 11 Python
快速了解Python中的装饰器
Jan 11 Python
python3中获取文件当前绝对路径的两种方法
Apr 26 Python
把pandas转换int型为str型的方法
Jan 29 Python
使用matlab或python将txt文件转为excel表格
Nov 01 Python
flask框架json数据的拿取和返回操作示例
Nov 28 Python
python列表推导式入门学习解析
Dec 02 Python
将python文件打包exe独立运行程序方法详解
Feb 12 Python
配置python的编程环境之Anaconda + VSCode的教程
Mar 29 Python
看看如何用Python绘制小米新版天价logo
Apr 20 Python
python中的代码编码格式转换问题
Jun 10 #Python
python实现数独算法实例
Jun 09 #Python
python中的全局变量用法分析
Jun 09 #Python
python简单实现计算过期时间的方法
Jun 09 #Python
Python扫描IP段查看指定端口是否开放的方法
Jun 09 #Python
Python实现数据库编程方法详解
Jun 09 #Python
Python读写文件方法总结
Jun 09 #Python
You might like
php实现的支持imagemagick及gd库两种处理的缩略图生成类
2014/09/23 PHP
PHP实现微信对账单处理
2018/10/01 PHP
ThinkPHP5.0框架结合Swoole开发实现WebSocket在线聊天案例详解
2019/04/02 PHP
YII2框架中查询生成器Query()的使用方法示例
2020/03/18 PHP
基于JavaScript 下namespace 功能的简单分析
2013/07/05 Javascript
JQuery操作三大控件(下拉,单选,复选)的方法
2013/08/06 Javascript
javascript实现漂亮的拖动层,窗口拖拽特效
2015/04/24 Javascript
再JavaScript的jQuery库中编写动画效果的指南
2015/08/13 Javascript
AngularJs解决跨域问题案例详解(简单方法)
2016/05/19 Javascript
用AngularJS的指令实现tabs切换效果
2016/08/31 Javascript
angular十大常见问题
2017/03/07 Javascript
JavaScript框架Angular和React深度对比
2017/11/20 Javascript
jquery写出PC端轮播图实例
2018/01/26 jQuery
代码详解javascript模块加载器
2018/03/04 Javascript
Vue使用vue-recoure + http-proxy-middleware + vuex配合promise实现基本的跨域请求封装
2019/10/21 Javascript
[16:56]教你分分钟做大人:司夜刺客
2014/10/30 DOTA
[05:06]DOTA2-DPC中国联赛 正赛 VG vs Magma选手采访
2021/03/11 DOTA
python模拟Django框架实例
2016/05/17 Python
Python之日期与时间处理模块(date和datetime)
2017/02/16 Python
Python爬虫之模拟知乎登录的方法教程
2017/05/25 Python
python3处理含有中文的url方法
2018/05/10 Python
pyqt远程批量执行Linux命令程序的方法
2019/02/14 Python
对python中的*args与**kwgs的含义与作用详解
2019/08/28 Python
使用浏览器访问python写的服务器程序
2019/10/10 Python
python的scipy实现插值的示例代码
2019/11/12 Python
查看端口并杀进程python脚本代码
2019/12/17 Python
python Scrapy框架原理解析
2021/01/04 Python
html5 Canvas实现图片旋转的示例
2018/01/15 HTML / CSS
APM Monaco中国官网:来自摩纳哥珠宝品牌
2017/12/27 全球购物
Seavenger官网:潜水服、浮潜、靴子和袜子
2020/03/05 全球购物
List, Set, Map是否继承自Collection接口?
2016/05/16 面试题
事业单位竞聘上岗实施方案
2014/03/28 职场文书
文明美德伴我成长演讲稿
2014/05/12 职场文书
青年人初次创业的“五不要”
2019/08/23 职场文书
股东合作协议书模板2篇
2019/11/05 职场文书
springboot为异步任务规划自定义线程池的实现
2022/06/14 Java/Android