plt.plot()函数是我们平时绘图的时候最常用的另外一个函数之一,先放一下官网上的介绍,该函数的关键字参数不多,其中**kwargs不作介绍,和其他保持一致,下面通过例子详细说一下。

matplotlib.pyplot.plot(*args, scalex=True, scaley=True, data=None, **kwargs)#调用格式说明
plot([x], y, [fmt], *, data=None, **kwargs)
plot([x], y, [fmt], [x2], y2, [fmt2], ..., **kwargs)

1. 常用的调用方式

plot()方法一般是用来绘制线条的,包括直线、折线等,从上面的调用格式说明中可以看到,最简洁的调用方式是直接传入一个数组对象y,其他参数都是可选的。如下:先创建一个服从正态分布的数据,共100个点,直接传入plot()。

data = np.random.normal(5, 1, 100)
fig = plt.figure()
plt.plot(data)
plt.show()

当只传入绘制的数据列表时,默认数据作为Y轴值,而X轴的坐标则是由数据的下标组成的,共100个点对应X轴的100个坐标。plt.plot()肯定也支持自定义X轴坐标,只需要调用的时候传入两个大小相同的数组即可,X坐标在前,Y坐标在后。plt.plot()默认是将每个点通过直线连接起来,所以当点比较少的时候就呈现下左图,当点较多时就呈现下右图,看似时曲线。

x = np.linspace(-np.pi, np.pi, 10)   #x = np.linspace(-np.pi, np.pi, 100)
y = np.sin(x)
fig = plt.figure()
plt.plot(x, y)
plt.show()

2. 关键字参数

格式fmt : 字符串str, [可选optional],定义线条的颜色和样式的操作

如“ro”就是红色的圆圈,更多组合参见官网列表,

x = np.linspace(-np.pi, np.pi, 50)   #x = np.linspace(-np.pi, np.pi, 100)
y = np.sin(x)
fig = plt.figure()
fig.suptitle('fmt: ro')
plt.plot(x, y, 'ro')     #不可写成fmt='ro',目前不识别关键字fmt
plt.show()

注意上面这样每个点之间就不能连接起来了,plot()函数还定义了每个点之间的连接方式,如'-.'表示点画线、'-'表示实线。

x = np.linspace(-np.pi, np.pi, 50)   #x = np.linspace(-np.pi, np.pi, 100)
y = np.sin(x)
fig = plt.figure()
fig.suptitle('fmt: r-*')
plt.plot(x, y, 'r-*')     #不可写成fmt='ro',目前不识别关键字fmt
plt.show()

详细的标记如下面三个表所示。 

标记character

描述description

标记character

描述description

'o'

圆圈

'.'

'D'

菱形

's'

正方形

'd'

小菱形

'*'

星号

'H'

六边形1

'v'

一角朝下的三角形

'h'

六边形2

'<'

一角朝左的三角形

'_'

水平线

'>'

一角朝右的三角形

'|'

竖线

'^'

一角朝上的三角形

'8'

八边形

'+'

加号

'p'

五边形

'x'

X

','

像素

'None', '', ' '

线条风格

描述

线条风格

描述

'-'

实线

':'

虚线

'--'

破折线

'None', ' ', ''

什么都不画

'-.'

点划线

别名

颜色

别名

颜色

B

蓝色

G

绿色

R

红色

Y

黄色

C

青色

K

黑色

M

洋红色

W

白色

各种属性**kwargs:Line2D properties

这个属性就相当之多了,借用官网一句话:kwargs are used to specify properties like a line label (for auto legends), linewidth, antialiasing, marker face color.就是说该参数主要用来指明绘线的一些属性,如标签、线宽、标记、背景颜色等。下面就介绍几个常用的properties,其他的可以去官网查。

第一个是label,表示标签,如图就是说画的线的标签,通过调用plt.legend()之后会显示出来;
fig = plt.figure()
fig.suptitle('Figure: example for label')
plt.plot([1,2,3,4], label='a')
plt.plot([4,3,2,1], label='b')
plt.legend()
plt.show()第二个是linewidth,表示线宽,也可以调用缩写lw=1等价于lienwidth=1;
plt.plot([1,2,3,4], linewidth=1)
plt.plot([4,3,2,1], linewidth=5)第三个是color,表示颜色,一般来说会自动分配合适的颜色,用户也可以自定义任意符合的颜色;
plt.plot([1,2,3,4], color='r')
plt.plot([4,3,2,1], color='g')第四个是linestyle,表示线的类型,也可以调用缩写ls='-.'等价于linestyle='-.'
plt.plot([1,2,3,4], linestyle='--')
plt.plot([4,3,2,1], linestyle='-.')第五个是alpha,表示透明度,浮点类型
plt.plot([1,2,3,4], label='a', alpha=0.8)
plt.plot([4,3,2,1], label='b', alpha=0.2)第六个凑数的visible,表示是否显示
plt.plot([1,2,3,4], label='a', visible=True)
plt.plot([4,3,2,1], label='b', visible=False)

3. 返回值

plt.plot()函数的返回值是一个存放Line2D类型的元素的列表,下面是官网的一句话。上面介绍的各种属性也可以之后通过面向对象的方式进行操作,具体会在后面的Line2D详解章节里面具体说明。

OK,在这里顺便多回答一点,每次绘图的时候用不用plt.show()?

如果你是最开始和我一样使用jupyter notebook来学习matplotlib,那你肯定也会有点疑问,plt.show()有没有好像都一样,那么该函数的作用是啥呢?简单来说plt.show()的使用与你当前使用的环境有关,总的来说可以分为三种开发环境,分别是脚本,IPython shell和Notebook。

1. 在脚本中画图

如果你在一个脚本文件中使用matplotlib,那么显示图形的时候必须使用plt.show(),该函数会启动一个事件循环(event loop),并找到所有当前可用的图形对象,然后打开一个或多个交互式窗口显示图形。例如你现在有一个python的脚本文件,代码如下:

import matplotlib.pyplot as plt
import numpy as npplt.plot([1,2,3,4])
plt.show()

简简单单的两行代码,然后从命令行工具中执行这个脚本,然后会看到一个新窗口,里面显示你的图形。看似简单的一句话,但是这行代码却在后面完成了很多事情,体现了matplotlib跨平台的特性。每个平台的绘图接口API都是不一样的,plt.show()需要与你使用的操作系统的图形显示接口进行交互。虽然具体的操作细节会因操作系统和安装过程不同而有很大的差异,但是matplotlib会为你隐藏了所有的细节,非常省心。

不过有一点需要注意,一个python会话中只能使用一个plt.show(),因此通常都会把他放在脚本的最后。多个plt.show()命令会导致难以预料的显示异常,应该尽量避免。

2. 在IPython shell中画图

在IPython shell中交互式地使用matplotlib画图非常简单,在IPython启动的matplotlib模式就可以使用它。为了启动这个模式,你需要在启动IPython后使用%matplotlib魔法命令。此后的任何plt命令都会自动打开一个图形窗口,增加新的命令,图形就会更新,有一些变化(例如改变已经画好的线条属性)不会自动及时更新;对于这些变化,可以使用plt.draw()强势更新。

在IPython shell中启动matplotlib模式之后就不需要使用plt.show()了。

3. 在IPython notebook中画图

IPython notebook进行交互式画图与使用IPython shell类似,也需要使用%matplotlib命令激活。在notebook页面有两种展现形式。

  • %matplotlib notebook 会在notebook中启动交互式图形
  • %matplotlib inline会在notebook中启动静态图形

运行命令之后,在每个notebook的单元中创建图形就会直接将PNG格式图形文件嵌入在单元格中。

matplotlib之plot()详解相关推荐

  1. Python Matplotlib 3D绘图详解(汇总)

    Python Matplotlib 3D绘图详解(汇总) 最初开发的 Matplotlib,仅支持绘制 2d 图形,后来随着版本的不断更新, Matplotlib 在二维绘图的基础上,构建了一部分较为 ...

  2. Matplotlib subplot2grid()函数详解

    Matplotlib subplot2grid()函数详解 matplotlib.pyplot 模块提供了 subplot2grid() ,该函数能够在画布的特定位置创建 axes 对象(即绘图区域) ...

  3. plt.plot()详解

    plt.plot()函数是matplotlib.pyplot模块下的一个函数, 用于画图 它可以绘制点和线, 并且对其样式进行控制. 由浅入深介绍如下 1.plt.plot(x, y) 1.1 x为x ...

  4. modulenotfounderror: no module 或modulenotfounderror: no module named 'matplotlib._path' 原因详解及解决办法

    环境:Ubuntun14.04LTS +Anaconda4.2+tensorflow1.2+pycharm community2017.3.3 运行.py文件时,1.出现ImportError: No ...

  5. Python matplotlib高级绘图详解

    Pyplot绘图结构 Aritists matplotlib API包含有三层: backend_bases.FigureCanvas : 图表的绘制领域 backend_bases.Renderer ...

  6. matplotlib绘图入门详解

    matplotlib是受MATLAB的启发构建的.MATLAB是数据绘图领域广泛使用的语言和工具.MATLAB语言是面向过程的.利用函数的调用,MATLAB中可以轻松的利用一行命令来绘制直线,然后再用 ...

  7. Python可视化库Matplotlib绘图入门详解

    Matplotlib是Python的绘图库,其中的pyplot包封装了很多画图的函数. Matplotlib.pyplot 包含一系列类似 MATLAB 中绘图函数的相关函数.每个 Matplotli ...

  8. matplotlib 中文_详解Matplotlib中文字符显示问题

    在用matplotlib进行绘图时,如果在绘制过程中会用到中文,则默认情况下会出现字体警告,中文字符显示为方框或乱码的形式,我们这里将介绍多种解决方案. 02 目录: 1.中文字体显示问题 2.几种解 ...

  9. matplotlib 绘图入门详解

    matplotlib是受MATLAB的启发构建的.MATLAB是数据绘图领域广泛使用的语言和工具.MATLAB语言是面向过程的.利用函数的调用,MATLAB中可以轻松的利用一行命令来绘制直线,然后再用 ...

最新文章

  1. 【OpenCV 4开发详解】图像连通域分析
  2. 一个编译不能通过的问题的解决
  3. 开发短视频APP跟上时代的快车
  4. 一文看懂神经网络初始化!吴恩达Deeplearning.ai最新干货
  5. [WPF系列]Button 自定义
  6. 高地址和低地址、高字节低字节、大小端模式的转换,存储顺序
  7. 2_数据分析—认识pandas
  8. java数据结构--最大堆
  9. OpenShift 4之设置用户/组对项目的访问权限
  10. 编译过程、静态库和动态库
  11. Linux安装教程(超详细版)
  12. 编程猫 python教材_编程猫全新推出系列编程教材补足编程系统性教学内容,教育部评审专家作序推荐...
  13. 网易云课堂 oracle,网易云课堂DBA学习笔记 (一) 数据库基础
  14. 高中开计算机课吗,高中信息技术课的开设意义和课程实施方法
  15. 使用Connectify让电脑变为WIFI
  16. AArch64架构内存布局及线性地址转换
  17. 什么是信号完整性?(大白话)
  18. 九联AX1800 WiFi6路由 真香评测
  19. GlobalProtect bupt for mac
  20. MySQL8功能详解——角色

热门文章

  1. Android面试必问!面试字节跳动Android研发岗,满满干货指导
  2. 基于gradle的dependency-management配置实现多模块springboot依赖库的版本管理
  3. 为什么他们不用996,却能做到“永不宕机”?
  4. mp3剪切器如何剪切mp3格式的音频
  5. 撑持4G LTE网络 OPPO R1S或在美出售
  6. 机器学习 --- 朴素贝叶斯分类器 python
  7. Android 之路18---Java基础12
  8. R语言利用igraph和networkD3包快速入门做出炫酷的社交网络图等几类图。
  9. 基于微信小程序的校园二手物品交易平台的设计与实现-计算机毕业设计源码+LW文档
  10. matlab ifs植物形态,matlab练习程序(IFS分形)