手把手教你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之眼花缭乱的运算符
Sep 14 Python
Python表示矩阵的方法分析
May 26 Python
Python模拟鼠标点击实现方法(将通过实例自动化模拟在360浏览器中自动搜索python)
Aug 23 Python
python将文本分每两行一组并保存到文件
Mar 19 Python
详谈Python中列表list,元祖tuple和numpy中的array区别
Apr 18 Python
Windows 8.1 64bit下搭建 Scrapy 0.22 环境
Nov 18 Python
Django 实现xadmin后台菜单改为中文
Nov 15 Python
django实现模型字段动态choice的操作
Apr 01 Python
Python数据正态性检验实现过程
Apr 18 Python
Python通过类的组合模拟街道红绿灯
Sep 16 Python
2021年值得向Python开发者推荐的VS Code扩展插件
Jan 25 Python
详解Python中的for循环
Apr 30 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 生成随机验证码图片代码
2010/02/08 PHP
PHP源代码数组统计count分析
2011/08/02 PHP
thinkphp的URL路由规则与配置实例
2014/11/26 PHP
详谈phpAdmin修改密码后拒绝访问的问题
2017/04/03 PHP
laravel通过创建自定义artisan make命令来新建类文件详解
2017/08/17 PHP
thinkphp5+layui实现的分页样式示例
2019/10/08 PHP
分享27个jQuery 表单插件集合推荐
2011/04/25 Javascript
一个JavaScript函数把URL参数解析成Json对象
2014/09/24 Javascript
阻止表单提交按钮多次提交的完美解决方法
2016/05/16 Javascript
vue.js+Element实现表格里的增删改查
2017/01/18 Javascript
浅谈 vue 中的 watcher
2017/12/04 Javascript
jquery+css3实现熊猫tv导航代码分享
2018/02/12 jQuery
layui问题之模拟select点击事件的实例讲解
2018/08/15 Javascript
微信小程序时间控件picker view使用详解
2018/12/28 Javascript
如何让Nodejs支持H5 History模式(connect-history-api-fallback源码分析)
2019/05/30 NodeJs
微信小程序云开发获取文件夹下所有文件(推荐)
2019/11/14 Javascript
Vue使用预渲染代替SSR的方法
2020/07/02 Javascript
javascript实现简单页面倒计时
2021/03/02 Javascript
python中defaultdict的用法详解
2017/06/07 Python
python 2.7 检测一个网页是否能正常访问的方法
2018/12/26 Python
利用python脚本如何简化jar操作命令
2019/02/24 Python
Python I/O与进程的详细讲解
2019/03/08 Python
python图像处理入门(一)
2019/04/04 Python
解决python多行注释引发缩进错误的问题
2019/08/23 Python
快速解决Django关闭Debug模式无法加载media图片与static静态文件
2020/04/07 Python
Python 使用office365邮箱的示例
2020/10/29 Python
通息工程毕业生自荐信
2013/10/16 职场文书
商务邀请函范文
2014/01/14 职场文书
《彩色世界》教学反思
2014/04/12 职场文书
5.12护士节演讲稿
2014/04/30 职场文书
日语专业求职信
2014/07/04 职场文书
新生儿未入户证明
2015/06/23 职场文书
金榜题名主持词
2015/07/02 职场文书
有趣的二维码:使用MyQR和qrcode来制作二维码
2021/05/10 Python
SQL Server中的逻辑函数介绍
2022/05/25 SQL Server
Redis特殊数据类型Geospatial地理空间
2022/06/01 Redis