手把手教你Python yLab的绘制折线图的画法


Posted in Python onOctober 23, 2019

Python的可视化工具有很多,数不胜数,各有优劣。本文就对其中的pylab进行介绍。之所以介绍这一款,是因为它和Matlab的强烈相似度,如果你使用过Matlab,那么相信pylab你也会很快上手。

简单的plot函数

pylab绘图,最基本的函数就是plot函数,当然如果想要将图片显示出来,需要额外添加一个show函数。

python的绘图中,numpy是一个非常常用的工具,不太熟悉的可以参考博主的另一篇博文:【Python】Python之Numpy的超实用基础详细教程。

例如:

import pylab
import numpy as np

if __name__ == "__main__":
 x = np.arange(0, 1, 0.05)
 y = [i*i for i in np.arange(0, 1, 0.05)]
 pylab.plot(x, y)
 pylab.show()

运行生成的图片为:

手把手教你Python yLab的绘制折线图的画法

规定两个序列,只需要两个序列的长度相等,就可以以其中一个序列为横坐标,零一个序列为纵坐标,进行绘制

但是也看得出来,这样的图片是比较寒碜的,简单朴素。我们可以对线条进行一些修饰,比如线型、颜色、点型等等。只需要在plot函数中添加一个参数即可。这个参数用法比较灵活,特可以从下表的值中进行组合选择:

颜色 线型 点型
‘b' (蓝色) ‘-' (实线) ‘,' (像素)
‘g' (绿色) ‘?' (虚线) ‘o' (圆形)
‘r' (红色) ‘-.' (虚点线) ‘^' (上三角)
‘y' (黄色) ‘:' (点线) ‘s' (方形)
‘k' (黑色) ‘.' (点) ‘+' (加号)
‘w' (蓝色) ‘x' (叉形)

例如:

import pylab
import numpy as np

if __name__ == "__main__":
 x = np.arange(0, 1, 0.05)
 y = [i*i for i in np.arange(0, 1, 0.05)]
 pylab.plot(x, y, "b-.+")
 pylab.show()

运行生成的图片为:

手把手教你Python yLab的绘制折线图的画法

如果,还想增加图例,x轴、y轴的含义和刻度,标题的信息,也可以通过添加一些函数来进行。

例如:

# -*- coding:UTF-8 -*-
import pylab
import numpy as np

if __name__ == "__main__":
 x = np.arange(0, 1, 0.05)
 y = [i*i for i in np.arange(0, 1, 0.05)]
 pylab.plot(x, y, "b-.+", label='line')
 
 pylab.xlabel('x')       # x、y轴的介绍
 pylab.ylabel('y')
 
 pylab.xlim([0, 1])      # x、y轴的长度区间
 pylab.ylim([0, 1])
 
 pylab.xticks(np.arange(0, 1, 0.05), fontsize=8)    # x、y轴的刻度
 pylab.yticks(np.arange(0, 1, 0.05), fontsize=8)
 
 pylab.title('x-y')      # x、y的标题
 
 pylab.legend(loc=3, borderaxespad=0., bbox_to_anchor=(0, 0))     # 图例的位置
 pylab.show()

运行生成的图片为:

手把手教你Python yLab的绘制折线图的画法

是不是瞬间就感觉丰富了许多!

多折线绘制

当然,在很多时刻需要绘制多条折线。很明显,可以选择将多条直线绘制到同一张图片上,也可以选择在图片上绘制不同的子图。

多折线同图

将多条折线绘制到同一张图片上,这非常简单,直接再plot一条直线就可以了。

例如:

# -*- coding:UTF-8 -*-
import pylab
import numpy as np

if __name__ == "__main__":
 x = np.arange(0, 1, 0.05)
 y1 = [i*i for i in np.arange(0, 1, 0.05)]
 y2 = [i+i for i in np.arange(0, 1, 0.05)]
 pylab.plot(x, y1, "b-.+", label='line1')
 pylab.plot(x, y2, "r-.+", label='line2')

 pylab.xlabel('x')
 pylab.ylabel('y')
 pylab.xlim([0, 1])
 pylab.ylim([0, 1])
 pylab.xticks(np.arange(0, 1, 0.05), fontsize=8)
 pylab.yticks(np.arange(0, 1, 0.05), fontsize=8)
 pylab.title('x-y')
 pylab.legend(loc=3, borderaxespad=0., bbox_to_anchor=(0, 0))
 pylab.show()

多折线不同图

将多条折线绘制到图片上的不同子图上,这就需要通过subplot进行区域分割和指定。

subplot(numRows, numCols, plotNum)

该函数会将这个图片分为numRows行、nulCols列,然后按照从左到右、从上到下的顺序进行编号,最左上的编号为1。plotNum参数指定子图的所在区域

例如:

# -*- coding:UTF-8 -*-
import pylab
import numpy as np

if __name__ == "__main__":
 x = np.arange(0, 1, 0.05)
 y1 = [i*i for i in np.arange(0, 1, 0.05)]
 y2 = [i+i for i in np.arange(0, 1, 0.05)]

 pylab.subplot(1, 2, 1)
 pylab.plot(x, y1, "b-.+", label='line1')
 pylab.xlabel('x')
 pylab.ylabel('y1')
 pylab.xlim([0, 1])
 pylab.ylim([0, 1])
 pylab.xticks(np.arange(0, 1, 0.05), fontsize=8)
 pylab.yticks(np.arange(0, 1, 0.05), fontsize=8)
 pylab.title('x-y1')
 pylab.legend(loc=3, borderaxespad=0., bbox_to_anchor=(0, 0))

 pylab.subplot(1, 2, 2)
 pylab.plot(x, y2, "r-.+", label='line2')
 pylab.xlabel('x')
 pylab.ylabel('y2')
 pylab.xlim([0, 1])
 pylab.ylim([0, 1])
 pylab.xticks(np.arange(0, 1, 0.05), fontsize=8)
 pylab.yticks(np.arange(0, 1, 0.05), fontsize=8)
 pylab.title('x-y2')
 pylab.legend(loc=3, borderaxespad=0., bbox_to_anchor=(0, 0))

 pylab.show()

运行生成的图片为:

手把手教你Python yLab的绘制折线图的画法

这是比较规整的例子,如果是不规整的呢?例如,第一行两张图,第二行一张图。这就要稍微变通一下了。

第一行其实是按照2*2分法的第一个和第二个,第二行其实是按照2*1分法的第二行。这样思考就会迎刃而解了。

# -*- coding:UTF-8 -*-
import pylab
import numpy as np

if __name__ == "__main__":
 x = np.arange(0, 1, 0.05)
 y1 = [i*i for i in np.arange(0, 1, 0.05)]
 y2 = [i+i for i in np.arange(0, 1, 0.05)]

 pylab.subplot(2, 2, 1)
 pylab.plot(x, y1, "b-.+", label='line1')
 pylab.xlabel('x')
 pylab.ylabel('y1')
 pylab.xlim([0, 1])
 pylab.ylim([0, 1])
 pylab.xticks(np.arange(0, 1, 0.05), fontsize=8)
 pylab.yticks(np.arange(0, 1, 0.05), fontsize=8)
 pylab.title('x-y1')
 pylab.legend(loc=3, borderaxespad=0., bbox_to_anchor=(0, 0))

 pylab.subplot(2, 2, 2)
 pylab.plot(x, y2, "r-.+", label='line2')
 pylab.xlabel('x')
 pylab.ylabel('y2')
 pylab.xlim([0, 1])
 pylab.ylim([0, 1])
 pylab.xticks(np.arange(0, 1, 0.05), fontsize=8)
 pylab.yticks(np.arange(0, 1, 0.05), fontsize=8)
 pylab.title('x-y2')
 pylab.legend(loc=3, borderaxespad=0., bbox_to_anchor=(0, 0))

 pylab.subplot(2, 1, 2)
 pylab.plot(x, y1, "b-.+", label='line1')
 pylab.plot(x, y2, "r-.+", label='line2')
 pylab.xlabel('x')
 pylab.ylabel('y')
 pylab.xlim([0, 1])
 pylab.ylim([0, 1])
 pylab.xticks(np.arange(0, 1, 0.05), fontsize=8)
 pylab.yticks(np.arange(0, 1, 0.05), fontsize=8)
 pylab.title('x-y')
 pylab.legend(loc=3, borderaxespad=0., bbox_to_anchor=(0, 0))

 pylab.show()

运行生成的图片为:

手把手教你Python yLab的绘制折线图的画法

其他函数

除了上述函数之外,还有一些其他的常用函数。

pylab.grid()       # 网格绘制

pylab.savefig(图片存储路径, dpi=200)    # 保存为图片

掌握了这些基本的折现图的绘制函数,相信一般的折线图都可以轻松掌握。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
重命名批处理python脚本
Apr 05 Python
python3模拟百度登录并实现百度贴吧签到示例分享(百度贴吧自动签到)
Feb 24 Python
用实例详解Python中的Django框架中prefetch_related()函数对数据库查询的优化
Apr 01 Python
Python的Tornado框架的异步任务与AsyncHTTPClient
Jun 27 Python
python实现excel读写数据
Mar 02 Python
Pandas DataFrame 取一行数据会得到Series的方法
Nov 10 Python
Python基本数据结构之字典类型dict用法分析
Jun 08 Python
对Django项目中的ORM映射与模糊查询的使用详解
Jul 18 Python
python使用SQLAlchemy操作MySQL
Jan 02 Python
Python关于__name__属性的含义和作用详解
Feb 19 Python
Python2.6版本pip安装步骤解析
Aug 17 Python
关于python tushare Tkinter构建的简单股票可视化查询系统(Beta v0.13)
Oct 19 Python
Python之Numpy的超实用基础详细教程
Oct 23 #Python
Python从列表推导到zip()函数的5种技巧总结
Oct 23 #Python
Python箱型图绘制与特征值获取过程解析
Oct 22 #Python
Python使用贪婪算法解决问题
Oct 22 #Python
python元组和字典的内建函数实例详解
Oct 22 #Python
Python List列表对象内置方法实例详解
Oct 22 #Python
Python序列对象与String类型内置方法详解
Oct 22 #Python
You might like
关于php mvc开发模式的感想
2011/06/28 PHP
使用PHP遍历文件夹与子目录的函数代码
2011/09/26 PHP
phpexcel导出excel的颜色和网页中的颜色显示不一致
2012/12/11 PHP
php mysql_real_escape_string函数用法与实例教程
2013/09/30 PHP
php返回相对时间(如:20分钟前,3天前)的方法
2015/04/14 PHP
PHP加密解密字符串汇总
2015/04/26 PHP
php post大量数据时发现数据丢失问题解决方法
2015/06/20 PHP
PHP Socket网络操作类定义与用法示例
2017/08/30 PHP
js 弹出框 替代浏览器的弹出框
2010/10/29 Javascript
js性能优化 如何更快速加载你的JavaScript页面
2012/03/17 Javascript
Javascript开发之三数组对象实例介绍
2012/11/12 Javascript
JS下载文件|无刷新下载文件示例代码
2014/04/17 Javascript
基于iframe实现类似于ajax的页面无刷新
2014/05/31 Javascript
JS应用正则表达式转换大小写示例
2014/09/18 Javascript
D3.js 从P元素的创建开始(显示可加载数据)
2014/10/30 Javascript
JavaScript简介
2015/02/15 Javascript
js查看一个函数的执行时间实例代码
2015/09/12 Javascript
简单实现JS倒计时效果
2016/12/23 Javascript
JS绘制微信小程序画布时钟
2016/12/24 Javascript
JS实现移动端整屏滑动的实例代码
2017/11/10 Javascript
实现jquery放大镜的两种方法
2018/02/22 jQuery
webpack优化之代码分割与公共代码提取详解
2019/11/22 Javascript
使用原生javascript开发计算器实例代码
2021/02/21 Javascript
[00:12]2018DOTA2亚洲邀请赛 Somnus丶M出阵单挑
2018/04/06 DOTA
pydev使用wxpython找不到路径的解决方法
2013/02/10 Python
Python文件和流(实例讲解)
2017/09/12 Python
解决python中无法自动补全代码的问题
2018/12/04 Python
如何用Python制作微信好友个性签名词云图
2019/06/28 Python
简单了解python shutil模块原理及使用方法
2020/04/28 Python
python实现图像高斯金字塔的示例代码
2020/12/11 Python
open_basedir restriction in effect. 原因与解决方法
2021/03/14 PHP
升学宴学生答谢词
2015/01/05 职场文书
小学2016年第十八届推普周活动总结
2016/04/05 职场文书
MySQL官方导出工具mysqlpump的使用
2021/05/21 MySQL
使用springMVC所需要的pom配置
2021/09/15 Java/Android
Windows7下FTP搭建图文教程
2022/08/05 Servers