matplotlib之plot()详解
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()详解相关推荐
- Python Matplotlib 3D绘图详解(汇总)
Python Matplotlib 3D绘图详解(汇总) 最初开发的 Matplotlib,仅支持绘制 2d 图形,后来随着版本的不断更新, Matplotlib 在二维绘图的基础上,构建了一部分较为 ...
- Matplotlib subplot2grid()函数详解
Matplotlib subplot2grid()函数详解 matplotlib.pyplot 模块提供了 subplot2grid() ,该函数能够在画布的特定位置创建 axes 对象(即绘图区域) ...
- plt.plot()详解
plt.plot()函数是matplotlib.pyplot模块下的一个函数, 用于画图 它可以绘制点和线, 并且对其样式进行控制. 由浅入深介绍如下 1.plt.plot(x, y) 1.1 x为x ...
- modulenotfounderror: no module 或modulenotfounderror: no module named 'matplotlib._path' 原因详解及解决办法
环境:Ubuntun14.04LTS +Anaconda4.2+tensorflow1.2+pycharm community2017.3.3 运行.py文件时,1.出现ImportError: No ...
- Python matplotlib高级绘图详解
Pyplot绘图结构 Aritists matplotlib API包含有三层: backend_bases.FigureCanvas : 图表的绘制领域 backend_bases.Renderer ...
- matplotlib绘图入门详解
matplotlib是受MATLAB的启发构建的.MATLAB是数据绘图领域广泛使用的语言和工具.MATLAB语言是面向过程的.利用函数的调用,MATLAB中可以轻松的利用一行命令来绘制直线,然后再用 ...
- Python可视化库Matplotlib绘图入门详解
Matplotlib是Python的绘图库,其中的pyplot包封装了很多画图的函数. Matplotlib.pyplot 包含一系列类似 MATLAB 中绘图函数的相关函数.每个 Matplotli ...
- matplotlib 中文_详解Matplotlib中文字符显示问题
在用matplotlib进行绘图时,如果在绘制过程中会用到中文,则默认情况下会出现字体警告,中文字符显示为方框或乱码的形式,我们这里将介绍多种解决方案. 02 目录: 1.中文字体显示问题 2.几种解 ...
- matplotlib 绘图入门详解
matplotlib是受MATLAB的启发构建的.MATLAB是数据绘图领域广泛使用的语言和工具.MATLAB语言是面向过程的.利用函数的调用,MATLAB中可以轻松的利用一行命令来绘制直线,然后再用 ...
最新文章
- 【OpenCV 4开发详解】图像连通域分析
- 一个编译不能通过的问题的解决
- 开发短视频APP跟上时代的快车
- 一文看懂神经网络初始化!吴恩达Deeplearning.ai最新干货
- [WPF系列]Button 自定义
- 高地址和低地址、高字节低字节、大小端模式的转换,存储顺序
- 2_数据分析—认识pandas
- java数据结构--最大堆
- OpenShift 4之设置用户/组对项目的访问权限
- 编译过程、静态库和动态库
- Linux安装教程(超详细版)
- 编程猫 python教材_编程猫全新推出系列编程教材补足编程系统性教学内容,教育部评审专家作序推荐...
- 网易云课堂 oracle,网易云课堂DBA学习笔记 (一) 数据库基础
- 高中开计算机课吗,高中信息技术课的开设意义和课程实施方法
- 使用Connectify让电脑变为WIFI
- AArch64架构内存布局及线性地址转换
- 什么是信号完整性?(大白话)
- 九联AX1800 WiFi6路由 真香评测
- GlobalProtect bupt for mac
- MySQL8功能详解——角色
热门文章
- Android面试必问!面试字节跳动Android研发岗,满满干货指导
- 基于gradle的dependency-management配置实现多模块springboot依赖库的版本管理
- 为什么他们不用996,却能做到“永不宕机”?
- mp3剪切器如何剪切mp3格式的音频
- 撑持4G LTE网络 OPPO R1S或在美出售
- 机器学习 --- 朴素贝叶斯分类器 python
- Android 之路18---Java基础12
- R语言利用igraph和networkD3包快速入门做出炫酷的社交网络图等几类图。
- 基于微信小程序的校园二手物品交易平台的设计与实现-计算机毕业设计源码+LW文档
- matlab ifs植物形态,matlab练习程序(IFS分形)