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

 更新时间:2019年10月23日 09:58:01   作者:Yngz_Miao  
这篇文章主要介绍了手把手教你Python yLab的绘制折线图的画法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

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)    # 保存为图片

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

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

相关文章

  • Python中IPYTHON入门实例

    Python中IPYTHON入门实例

    这篇文章主要介绍了Python中IPYTHON的用法入门,较为详细的分析了IPYTHON的配置及使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-05-05
  • python实现每天定时发送邮件的流程步骤

    python实现每天定时发送邮件的流程步骤

    这篇文章主要介绍了python实现每天定时发送邮件的流程步骤,要编写一个用于自动发送每日电子邮件报告的 Python 脚本,并配置它在每天的特定时间发送电子邮件,文中给大家介绍了详细步骤和示例代码,需要的朋友可以参考下
    2024-08-08
  • Tensorflow 2.4 搭建单层和多层 Bi-LSTM 模型

    Tensorflow 2.4 搭建单层和多层 Bi-LSTM 模型

    这篇文章主要为大家介绍了Tensorflow 2.4 搭建单层 Bi-LSTM 模型和多层 Bi-LSTM 模型的实现过程详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-01-01
  • python实现图片加文字水印OPenCV和PIL库

    python实现图片加文字水印OPenCV和PIL库

    本文来为大家介绍一下,使用python中的库实现给图片添加文字水印,openCV可以给图片添加水印,如果要添加汉字水印那就要使用PIL库
    2021-09-09
  • Python深度学习pytorch神经网络块的网络之VGG

    Python深度学习pytorch神经网络块的网络之VGG

    虽然AlexNet证明深层神经网络卓有成效,但它没有提供一个通用的模板来指导后续的研究人员设计新的网络。下面,我们将介绍一些常用于设计深层神经网络的启发式概念
    2021-10-10
  • Python中with及contextlib的用法详解

    Python中with及contextlib的用法详解

    这篇文章主要介绍了Python中with及contextlib的用法,结合实例形式较为详细的分析了with及contextlib的功能、使用方法与相关注意事项,需要的朋友可以参考下
    2017-06-06
  • python set()去重的底层原理及实例

    python set()去重的底层原理及实例

    python中集合set是一个无序不重复元素的集,基本功能包括关系测试和消除重复元素,还可以计算交集、差集、并集等,它与列表(list)的行为类似,这篇文章主要介绍了python set()去重的底层原理,需要的朋友可以参考下
    2022-01-01
  • python从Hadoop HDFS导出数据到关系数据库

    python从Hadoop HDFS导出数据到关系数据库

    这篇文章主要为大家详细介绍了Python如何从Hadoop HDFS中导出数据并通过DataX工具导入到关系数据库,例如MySQL,Oracle,PostgreSQL等,感兴趣的可以了解下
    2024-11-11
  • python全局解释器GIL锁机制详解

    python全局解释器GIL锁机制详解

    我们要知道一点GIL并不是Python的特性,它是Python解释器Cpython引入的一个概念,下面这篇文章主要给大家介绍了关于python全局解释器GIL锁机制的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2022-12-12
  • pytorch如何保存训练模型参数并实现继续训练

    pytorch如何保存训练模型参数并实现继续训练

    这篇文章主要介绍了pytorch如何保存训练模型参数并实现继续训练问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-09-09

最新评论