首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

一文教会你使用Matplotlib绘图

Matplotlib

可能还有小伙伴不知道 是什么,下面是维基百科的介绍。

Matplotlib 是Python编程语言的一个绘图库及其数值数学扩展 NumPy。它为利用通用的图形用户界面工具包,如Tkinter, wxPython, Qt或GTK+向应用程序嵌入式绘图提供了面向对象的应用程序接口。

简单说就是画图的工具包。本文将教会你如何使用 绘图,如果你没有 基础也没关系,依葫芦画瓢也完全OK的。关于如何安装Python以及Matplotlib,文末有链接。

绘制第一个图

如果给 函数一个一维数组,则将该数组作为纵轴坐标,并且将数组中的每个数据点索引作为水平坐标

如果提供两个数组,则将其分别作为x轴和y轴

坐标轴会自动匹配数据的范围,不过我们可以调用 函数来改变每个轴的范围

我们用NumPy's的 函数在范围[-2, 2]内创建包含500个浮点数的数组 ,计算数组 的平方作为数组

添加标题,x、y轴标签,并绘制网格

线条样式和颜色

默认情况下,matplotlib在连续的点之间绘制一条线。

可在第三个参数更改线条的样式和颜色,比如“g--”表示“绿色虚线”

你可以绘制多条线在同一个图上,仅仅通过重复

也可以在 之前 多次

你也可以绘制点而不只是绘制直线

接受以下格式字符来控制线条样式或标记支持以下颜色缩写

函数会返回一个 对象列表,你可以额外设置一些属性,例如线的宽度,虚线风格等等。

属性保存图像

可使用savefig函数保存图像

参数

fname: 包含文件名的路径字符串

dpi: [ None | scalar > 0 | ‘figure’]

format: 文件扩展名,大多数后端支持

transparent: 如果为True则轴部分的背景透明。

示例

组合图

一个图可能需要包含多个子图,那么如何操作呢。要创建子图其实只需调用子图函数,并制定图中的行数和列数,以及要绘制的子图的索引(从1开始,然后从左到右,从上到下)。注意,pyplot会跟踪当前活动的子图(您可以调用 来获得引用,可以借此添加额外属性),因此当您调用绘图函数时,它会绘制活动的子图。

注意: 是 的缩写。

创建跨多个网格单元的子图也很容易

如果你需要更复杂的子图定位,你可以使用 ,你可以指定格子行数和列数,然后在格子上绘制子图(左上 = (0, 0)),并且可以指定它能跨越多少行和多少列。

如果需要更灵活的子图定位,看这里

绘制文本

你可以调用 在图像任意位置添加文本。仅需指定坐标选择一些额外属性。关于TeX方程表达式的细节看这里

图像元素的注释使用非常频繁, 函数使得它非常简单,只需指定兴趣点的位置、文本的位置,加上文字和箭头的一些额外属性就能完成。

你可以使用 属性在文本周围加上框。

如果为了好玩可以绘制漫画风格的图(xkcd-style),只需在 内写代码就好。

图例

添加图例最简单的方法是在对应位置添加标签,然后调用 函数

非线性尺度

Matplotlib支持非线性尺度,例如对数或logit尺度

Ticks and tickers 刻度和刻度控制器

"ticks"是刻度的位置 (例如 (-1, 0, 1)),"tick lines"是在这些位置绘制的小线条(刻度线),"tick labels"实在刻度线旁边绘制的标签(刻度线标签)。"tickers" 是决定在哪能放置刻度的对象,默认的tickers通常在合理的距离放置5到8个刻度。但有时候你需要控制它,幸运的是,matplotlib可以让你完全控制刻度。

极坐标投影

绘制极坐标图,只需在创建子图时,设定"projection"属性为"polar"即可。

3D投影

绘制3D图像非常直接,你需要导入 ,以注册 投影。然后设定 属性为 。它将返回一个 对象,你可以调用 ,给定x,y和z坐标加额外的属性来绘制。

显示相同数据的另外一种方法是用等高线图

散点图

提供x和y的坐标就可以绘制散点图。

你也可以提供每个点的比例

还可以设置些额外的属性,例如填充颜色、边缘颜色、透明度。

直线(工具函数)

创建一个工具函数来画图通常会更方便,该函数会在给定斜率和截距的情况下在图上绘制一条看似无限长的线。

直方图

图像

读取图像;仅需导入 moudle,再调用 函数(传入文件名),它将以NumPy's数组形式返回图像数据。

生成图像也很简单

由于我们没有提供RGB等级, 函数自动将值映射到颜色渐变。默认情况,颜色渐变从蓝色(低值)变为红色(高值),但你可以选择其他颜色映射。例如:

你也可以直接产生RGB图像

由于img数组非常小(20x30),所以当imshow函数显示它时,它会将图像增大图像的大小。 默认情况下,它使用双线性插值来填充所添加的像素。 这就是边缘看起来模糊的原因。 您可以选择另一种插值算法,例如复制最近像素的颜色:

动画

绘制

构造函数接受一个图形,一个更新函数和可选参数。 我们指定我们需要一个100帧长的动画,每帧之间有20ms。 在每次迭代中,FuncAnimation调用我们的更新函数,并将帧号传递给 (在我们的例子中是从0到99),接着是我们用 指定额外的参数。

我们的更新函数简单地将行数据设置为第一个数据点(所以数据将逐渐绘制),并且为了好玩,我们还为每个数据点添加一个小的随机数,这样该行似乎在摆动。

保存

Matplotlib依靠第三方库来编写视频,如FFMPEG或mencoder。 在这个例子中,我们将使用FFMPEG,所以一定要先安装它。

更多

Matplotlib官网: https://matplotlib.org/gallery.html

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180313G16TKA00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券