手把手教你Python yLab的绘制折线图的画法
作者:Yngz_Miao 发布时间:2023-03-11 21:21:43
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()
运行生成的图片为:
规定两个序列,只需要两个序列的长度相等,就可以以其中一个序列为横坐标,零一个序列为纵坐标,进行绘制。
但是也看得出来,这样的图片是比较寒碜的,简单朴素。我们可以对线条进行一些修饰,比如线型、颜色、点型等等。只需要在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()
运行生成的图片为:
如果,还想增加图例,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()
运行生成的图片为:
是不是瞬间就感觉丰富了许多!
多折线绘制
当然,在很多时刻需要绘制多条折线。很明显,可以选择将多条直线绘制到同一张图片上,也可以选择在图片上绘制不同的子图。
多折线同图
将多条折线绘制到同一张图片上,这非常简单,直接再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()
运行生成的图片为:
这是比较规整的例子,如果是不规整的呢?例如,第一行两张图,第二行一张图。这就要稍微变通一下了。
第一行其实是按照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()
运行生成的图片为:
其他函数
除了上述函数之外,还有一些其他的常用函数。
pylab.grid() # 网格绘制
pylab.savefig(图片存储路径, dpi=200) # 保存为图片
掌握了这些基本的折现图的绘制函数,相信一般的折线图都可以轻松掌握。
来源:https://blog.csdn.net/qq_38410730/article/details/102624579
猜你喜欢
- 进程、线程和协程之间的关系和区别也困扰我一阵子了,最近有一些心得,写一下。进程拥有自己独立的堆和栈,既不共享堆,亦不共享栈,进程由操作系统调
- 说明本文根据https://github.com/liuchengxu/blockchain-tutorial的内容,用python实现的,
- 一、文件基本的操作1、open() 打开文件open() 方法用于打开一个文件,并返回File文件对象,在对文件进行处理过程都需要使用到这个
- numpy norm()函数求范数函数:norm(x, ord = None, axis = None, keepdims = False)
- fsockopen函数能够运用,首先要开启php.ini中的allow_url_open=on;fsockopen是对socket客户端代码
- 作者:bencalie 整理日期:2004年6月15日<xml id="users"> <u
- 如下所示:pd.to_datetime(data[data['last_O_XLMC']==data['O_XLMC
- 这里有一些很棒的自动化脚本,你可以在你的 Python 项目中使用它们。在做项目的时候,我们需要一些现成的代码来帮助我们解决日常生活中的问题
- 本文实例讲述了Python反射的用法。分享给大家供大家参考,具体如下:在做程序开发中,我们常常会遇到这样的需求:需要执行对象里的某个方法,或
- ACCESS有个BUG,那就是在使用 like 搜索时如果遇到日文就会出现“内存溢出”的问题,提示“80040e14/内
- 关于 *args与**args的用法*args 和 **kwargs主要用于函数定义,你可以将不定数量的参数传递给某个函数。*args*ar
- phpMyAdmin可以管理整个MySQL服务器(需要超级用户),也可以管理单个数据库。为了实现后一种,你将需要合理设置MySQL用户,他只
- css usage是一个基于firebug的firefox扩展,可以用来查看页面中的CSS的使用情况,可以清楚的查看css文件中所有的规则在
- 前言:今天我来分享几个好用到爆的Pycharm插件,在安装上之后,你的编程效率、工作效率都能够得到极大地提升。一、安装方法插件的安装方法一点
- 在blueidea上看到movoin转的一个动态加载include文件代码,接着dnawo又修改了下,我用了dnawo修改后的版本,感觉挺好
- 字符串格式化输出是python非常重要的基础语法,今天就把三种格式化输出做一个简单的总结,希望对大家有帮助。格式化输出:内容按照一定格式要求
- Tracert 命令跟踪路由原理是IP路由每经过一个路由节点TTL值会减一,假设TTL值=0时数据包还没有到达目标主机,那么该路由则会回复给
- 按时间删除文件# importing the required modulesimport osimport shutilimport ti
- 环境安装安装Anaconda,官网链接Anaconda使用conda创建py3.6的虚拟环境,并激活使用conda create -n py
- 今天早上起来写爬虫,基本框架已经搭好,添加多线程爬取功能时,发现出错:比如在下载文件的url列表中加入200个url,开启50个线程。我的爬