Matplotlib 教程(使用 pyplot 绘制图形)

2023-10-19

Matplotlib 是 Python 中的一个库,可创建 2D 图形来可视化数据。可视化总是有助于更好地分析数据并增强用户的决策能力。在本 matplotlib 教程中,我们将绘制一些图形并更改一些属性,如字体、标签、范围等,

首先,我们将安装 matplotlib;然后我们将开始绘制一些基本图表。在此之前,我们先来看看 matplotlib 可以绘制的一些图表。

 

 

绘图类型

matplotlib 中有多种不同的绘图类型。本节简要介绍 matplotlib 中的一些绘图类型。

线图

线图是图表中的简单二维线。

轮廓和伪彩色

即使维度间隔不均匀,我们也可以使用函数 pcolormesh() 用颜色表示二维数组。类似地,contour() 函数执行相同的工作。

直方图

以 a 的形式返回 bin 计数和概率直方图,我们使用函数 hist()。

Paths

要在 Matplotlib 中添加任意路径,我们使用 matplotlib.path 模块。

流图

我们可以使用streamplot()函数来绘制向量的流线。我们还可以映射不同参数的颜色和宽度,例如速度时间等。

条形图

我们可以使用 bar() 函数来制作具有大量自定义功能的条形图。

其他类型

Matplotlib 中绘图的其他一些示例包括:

  • Ellipses
  • 饼状图
  • Tables
  • 散点图
  • 图形用户界面小部件
  • 填充曲线
  • 日期处理
  • 对数图
  • Legends
  • TeX-文本对象的符号
  • 原生 TeX 渲染
  • EEG GUI
  • XKCD 风格草图

 

安装

假设环境变量中设置了Python的路径,则只需使用pip命令安装matplotlib包即可开始使用。

使用以下命令:


$ pip install matplotlib  

如果该软件包尚不存在,则会下载并安装该软件包。

要将包导入到 Python 文件中,请使用以下语句:


import matplotlib.pyplot as plt  

其中 matplotlib 是库,pyplot 是一个包含所有内容的包MATLAB函数以在 Python 中使用 MATLAB 函数。

最后,我们可以使用plt调用 python 文件中的函数。

垂线

要使用 pyplot 绘制垂直线,可以使用 axvline() 函数。

axvline的语法如下:


plt.axvline(x=0, ymin=0, ymax=1, **kwargs)  

在这个语法中:x是 x 轴的坐标。该点是垂直生成线的位置。ymin是图的底部; ymax 是图的顶部。**kwargs是线条的属性,例如颜色、标签、线条样式等。


import matplotlib.pyplot as plt
plt.axvline(0.2, 0, 1, label='pyplot vertical line')
plt.legend()
plt.show()  

在此示例中,我们绘制一条垂直线。 0.2 表示将在图表上的点 0.2 处绘制线条。 0和1分别是ymin和ymax。

标签是线路属性之一。 legend() 是 MATLAB 函数,可在绘图上启用标签。最后,show() 将打开绘图或图表屏幕。

水平线

axhline() 绘制一条水平线。 axhline() 的语法如下:


plt.axhline(y=0, xmin=0, xmax=1, **kwargs)  

在语法中:y是沿 y 轴的坐标。这些点是水平生成线的位置。xmin是图的左侧; xmax 是图的右侧。**kwargs是线条的属性,例如颜色、标签、线条样式等。

将上例中的 axvline() 替换为 axhline() ,绘图上将出现一条水平线:


import matplotlib.pyplot as plt
ypoints = 0.2
plt.axhline(ypoints, 0, 1, label='pyplot horizontal line')
plt.legend()
plt.show()  

 

多条线路

要绘制多条垂直线,我们可以创建一个 x 点/坐标数组,然后迭代数组的每个元素以绘制多条线:


import matplotlib.pyplot as plt
xpoints = [0.2, 0.4, 0.6]
for p in xpoints:
    plt.axvline(p,  label='pyplot vertical line')
plt.legend()
plt.show()  

输出将是:

上面的输出看起来不太吸引人;我们也可以在图表中为每条线使用不同的颜色。

考虑下面的例子:


import matplotlib.pyplot as plt
xpoints = [0.2, 0.4, 0.6]
colors = ['g', 'c', 'm']
for p, c in zip(xpoints, colors):
    plt.axvline(p,  label='line: {}'.format(p), c=c)
plt.legend()
plt.show()  

在此示例中,我们有一个线条数组和一个 Python 颜色符号数组。使用 zip() 函数,两个数组合并在一起:第一个元素x点[]的第一个元素color[] 大批。这样,第一行 = 绿色,第二行 = 青色,依此类推。

大括号{} 充当占位符,借助 format() 函数将 Python 变量添加到打印中。因此,我们有x点[]在情节中。

上述代码的输出:

只需将上例中的 axvline() 替换为 axhline() ,绘图上就会有多条水平线:


import matplotlib.pyplot as plt
ypoints = [0.2, 0.4, 0.6, 0.68]
colors = ['b', 'k', 'y', 'm']
for p, c in zip(ypoints, colors):
    plt.axhline(p,  label='line: {}'.format(p), c=c)
plt.legend()
plt.show()  

代码是一样的;这次我们有一个由 y 轴的四个点和不同颜色组成的数组。两个数组都使用 zip() 函数合并在一起,迭代最终的数组,axhline() 绘制线条,如下面的输出所示:

保存图

绘制图表后,如何保存输出图?

要保存绘图,请使用 pyplot 的 savefig()。


plt.savefig(fname, **kwargs)  

其中 fname 是文件名,也可以与文件名一起指定目标或路径。 kwargs 参数是可选的。您可以使用它来更改方向、格式、外观颜色、质量、dpi 等。


import matplotlib.pyplot as plt
ypoints = [0.2, 0.4, 0.6, 0.68]
colors = ['b','k','y', 'm']
for p, c in zip(ypoints, colors):
    plt.axhline(p,  label='line: {}'.format(p), c=c)
plt.savefig('horizontal_lines.png')
plt.legend()
plt.show()  

文件名称为horizo​​ntal_lines.png;该文件将位于同一工作目录中:

 

多块地块

前面的所有示例都是关于在一个图中绘制的。在同一个图中绘制多个图怎么样?

借助 Python pyplot 的 subplot() 函数,您可以在同一个图中生成多个绘图。


matplotlib.pyplot.subplot(nrows, ncols, index, **kwargs)  

在参数中,我们需要指定三个整数,即行和列中的绘图数量,以及绘图应位于哪个索引处。您可以将其视为一个网格,我们正在其单元格上进行绘制。

第一个数字是 nrows 行数;第二个是 ncols 列数,然后是索引。其他可选参数(**kwargs)包括颜色、标签、标题、快照等。

请考虑以下代码,以便更好地理解如何在一张图中绘制多个图形。


from matplotlib import pyplot as plt
plt.subplot(1, 2, 1)
x1 = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100]
y1 = [5, 10, 15, 20, 25, 30, 35, 40, 45, 50]
plt.plot(x1, y1, color = "c")
plt.subplot(1, 2, 2)
x2 = [40, 50, 60, 70, 80, 90, 100]
y2 = [40, 50, 60, 70, 80, 90, 100]
plt.plot(x2, y2, color = "m")
plt.show()  

首先是定义情节的位置。在第一个子图中,1,2,1 表示我们有 1 行,2 列,当前图将在索引 1 处绘制。同样,1,2,2 表示我们有 1 行,2 列,但这一次是索引 2 处的图。

下一步是创建数组以在图中绘制整数点。查看下面的输出:

要绘制水平图,请将子图行和列值更改为:


plt.subplot(2, 1, 1)
plt.subplot(2, 1, 2)  

这意味着我们有 2 行和 1 列。输出将是这样的:

现在让我们创建一个 2×2 的绘图网格。

考虑下面的代码:


from matplotlib import pyplot as plt
plt.subplot(2, 2, 1)
x1 = [40, 50, 60, 70, 80, 90, 100]
y1 = [40, 50, 60, 70, 80, 90, 100]
plt.plot(x1, y1, color = "c")
plt.subplot(2, 2, 2)
x2 = [40, 50, 60, 70, 80, 90, 100]
x2 = [40, 50, 60, 70, 80, 90, 100]
plt.plot(x2, y2, color = "m")
plt.subplot(2, 2, 3)
x3 = [40, 50, 60, 70, 80, 90, 100]
y3 = [40, 50, 60, 70, 80, 90, 100]
plt.plot(x3, y3, color = "g")
plt.subplot(2, 2, 4)
x4 = [40, 50, 60, 70, 80, 90, 100]
y4 = [40, 50, 60, 70, 80, 90, 100]
plt.plot(x4, y4, color = "r")
plt.show()  

输出将是:

在此示例中,2,2,1 表示 2 行,2 列,绘图将位于索引 1 处。同样,2,2,2 表示 2 行,2 列,绘图将位于网格的索引 2 处。

字体大小

我们可以借助 rc() 函数来更改绘图的字体大小。 rc() 函数用于自定义 rc 设置。要使用 rc() 更改字体大小,请使用以下语法:


matplotlib.pyplot.rc('fontname', **font)  

Or


matplotlib.pyplot.rc('font', size=sizeInt)  

上面语法中的字体是一个用户定义的字典,指定文本的粗细、字体系列、字体大小等。


plt.rc('font', size=30)  

这会将字体更改为 30;输出将是:

轴范围

您可以分别使用 pyplot 的 xlim() 和 ylim() 函数设置 x 轴和 y 轴的范围或限制。


matplotlib.pyplot.xlim([starting_point, ending_point])
matplotlib.pyplot.ylim([starting_point, ending_point])  

考虑下面的示例来设置绘图的 x 轴限制:


from matplotlib import pyplot as plt
x1 = [40, 50, 60, 70, 80, 90, 100]
y1 = [40, 50, 60, 70, 80, 90, 100]
plt.plot(x1, y1)
plt.xlim([0,160])
plt.show()  

在此示例中,x 轴上的点将从 0 开始到 160,如下所示:

同样,要限制 y 轴坐标,您将输入以下代码行:


plt.ylim([0,160])  

输出将是:

标签轴

您可以使用 pyplot 的 xlabel() 和 ylabel() 函数创建 x 轴和 y 轴的标签。


matplotlib.pyplot.xlabel(labeltext, labelfontdict, **kwargs)
matplotlib.pyplot.ylabel(labeltext, labelfontdict, **kwargs)  

上面的语法中,labeltext是标签的文本,是一个字符串; labelfont 描述标签文本的字体大小、粗细、系列,并且它是可选的。


from matplotlib import pyplot as plt
x1 = [40, 50, 60, 70, 80, 90, 100]
y1 = [40, 50, 60, 70, 80, 90, 100]
plt.plot(x1, y1)
plt.xlabel('Like Geeks X Axis')
plt.ylabel('Like Geeks Y Axis')
plt.show()  

在上面的示例中,我们分别使用常规的 x 和 y 数组来表示 x 和 y 坐标。然后 plt.xlabel() 生成 x 轴文本,plt.ylabel() 生成 y 轴文本。

 

清晰的情节

pyplot 的 clf() 函数清除绘图。


matplotlib.pyplot.clf()  

在 clf() 函数中,我们没有任何参数。


from matplotlib import pyplot as plt
x1 = [40, 50, 60, 70, 80, 90, 100]
y1 = [40, 50, 60, 70, 80, 90, 100]
plt.plot(x1, y1)
plt.xlabel('Like Geeks X Axis')
plt.ylabel('Like Geeks Y Axis')
plt.clf()
plt.show()  

在此代码中,我们创建了一个绘图并定义了标签。之后,我们使用 clf() 函数清除绘图,如下所示:

我希望您发现本教程对于开始使用 matplotlib 很有帮助。

继续回来。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Matplotlib 教程(使用 pyplot 绘制图形) 的相关文章

  • x 或 y:可接受的习语,还是混淆?

    我必须从可能为 None 的变量中提取值 并考虑一些默认值 我首先写了这段代码 if self maxTiles is None maxX maxY 2 2 else maxX maxY self maxTiles 然后我意识到我可以将其缩
  • AWS Lambda 错误:无法导入模块“function_name”:没有名为“module._module”的模块

    阅读后请特别查看屏幕截图 我正在 AWS Lambda 上部署一个使用该包的 python 脚本impyla它依赖于包bitarray from impala dbapi import connect 我的Python文件名为authori
  • Python Numpy TypeError:输入类型不支持 ufunc 'isfinite'

    这是我的代码 def topK dataMat sensitivity meanVals np mean dataMat axis 0 meanRemoved dataMat meanVals covMat np cov meanRemov
  • 在Python中解析空选项

    我有一个应用程序 允许您将事件数据发送到自定义脚本 您只需布置命令行参数并指定什么事件数据与什么参数相匹配 问题是这里没有真正的灵活性 您制定的每个选项都将被使用 但并非每个选项都必须有数据 因此 当应用程序构建要发送到脚本的字符串时 某些
  • 为什么 Dash 在上传文件时会出现解析错误?

    上传 Excel 或 CSV 会导致错误 我遵循了 Dash 演示 但是当我尝试扩展它来执行绘图之类的操作时 它就不起作用了 我不想只显示一张桌子 Dash Table 函数已更新 因此之前使用 Dash Table Experiments
  • 使用 Python 连接从 FTP 检索文件

    我构建了这个简单的工具来暴力破解并连接到 ftp 服务器 import socket import ftplib from ftplib import FTP port 21 ip 192 168 1 108 file1 passwords
  • 是否可以在 SQLAlchemy 中创建一个可以创建父记录的事件侦听器?

    有两个表 父表和子表 我想创建一个事件监听器 触发器 如果孩子没有父母 它可以创建父母 这就是我试图做的 class parent db Model tablename parent id db Column db Integer prim
  • 将 KB/MB/GB 等字符串解析为数值

    为了不发明自行车 我想知道是否有任何库能够将大小字符串 MB KB TB MiB KiB 等 的各种表示形式解析为基于数字字节的值 ActiveState Receipes 有一个示例here http code activestate c
  • 在 python 中返回 self [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有一个代表对象的类 我有很多方法可以修改这个对象状态 没有明显的返回或显然没有任何返回 在 C 中 我会将所有这些方法声明为void
  • 使用自定义元素类在 Python 中解析 xml

    我想使用 Python 的 xml etree ElementTree 模块解析 xml 文档 但是 我希望生成的树对象中的所有元素都具有我定义的一些类方法 这建议创建我自己的 Python 元素类的子类 但我无法告诉解析器在解析时使用我自
  • Python 3:如何更改GDAL中的图像数据?

    我有一个 GeoTIFF 图像 其中包含颜色表和带有 8 位表键的单个栅格带 并且使用 LZW 压缩 我加载该图像gdal Open https gdal org python osgeo gdal module html 我还有一个包含
  • Matplotlib 动画未显示

    当我在家里的电脑上尝试这个时 它可以工作 但在工作的电脑上却不行 这是代码 import numpy as np import matplotlib pyplot as plt import matplotlib animation as
  • 如何在 PyCharm 中启用 flake8 的自动代码格式化

    我使用 Tox 运行单元测试 并使用 flake8 命令检查代码格式错误 每次我在 PyCharm 中编码时 我都会运行 tox 然后意识到我有一堆烦人的格式错误 我必须返回并手动修复 我希望 PyCharm 自动格式化代码 根据 flak
  • 让垂直网格线出现在 matplotlib 的线图中

    我想在绘图上同时获得水平和垂直网格线 但默认情况下仅显示水平网格线 我正在使用一个pandas DataFrame从 python 中的 sql 查询生成 x 轴上带有日期的线图 我不知道为什么它们没有出现在日期上 我试图寻找这个问题的答案
  • 了解 Tensorflow 中的 while 循环

    我正在使用用于 Tensorflow 的 Python API https www tensorflow org api docs python 我正在努力实施罗森布罗克函数 https www sfu ca ssurjano rosen
  • NumPy 中 exp(-x^2) 的快速傅立叶变换

    I have to calculate numerically the 2nd derivative of a Gaussian function I ve read every question on this topic here bu
  • Kivy:滚动缩放

    有没有办法在桌面 kivy 应用程序上放大图像 例如使用鼠标滚轮缩放 这里似乎讨论过 https github com kivy kivy issues 3563 https github com kivy kivy issues 3563
  • 帮助我在 Python 中实现反向传播

    EDIT2 新的训练集 Inputs 0 0 0 0 0 0 1 0 0 0 2 0 0 0 3 0 0 0 4 0 1 0 0 0 1 0 1 0 1 0 2 0 1 0 3 0 1 0 4 0 2 0 0 0 2 0 1 0 2 0 2
  • 交响二阶颂歌

    我有一个简单的二阶 ODE 的齐次解 当我尝试使用 Sympy 求解初始值时 它返回相同的解 它应该替代 y 0 和 y 0 并产生一个没有常数的解 但事实并非如此 这是建立方程的代码 它是一个弹簧平衡方程 k 弹簧常数 m 质量 我在其他
  • 在大型文本文件中查找重复记录

    我在一台 Linux 机器 Redhat 上 并且有一个 11GB 的文本文件 文本文件中的每一行包含单个记录的数据 并且该行的前 n 个字符包含该记录的唯一标识符 该文件包含略多于 2700 万条记录 我需要验证文件中不存在具有相同唯一标

随机推荐

  • 如何在 Ubuntu 20.04 上安装 Odoo 15

    Odoo 是一款流行的开源商业应用程序套件 可帮助公司管理和运营其业务 它包括广泛的应用程序 例如 CRM 电子商务 网站构建器 计费 会计 制造 仓库 项目管理 库存等等 所有这些都无缝集成 Odoo根据使用案例和可用技术 可以以不同的方
  • 如何在 Debian 10 Linux 上安装 Node.js 和 npm

    Node js 是一个基于 Chrome JavaScript 构建的跨平台 JavaScript 运行时环境 旨在在服务器端执行 JavaScript 代码 使用 Node js 您可以构建可扩展的网络应用程序 npm 是 Node js
  • 如何在 Debian 9 上安装 Java

    在本教程中 我们将逐步介绍在 Debian 9 上安装 Java Java 是用于构建不同类型的应用程序和系统的最流行的编程语言之一 用 Java 开发的应用程序具有可扩展性 灵活性和可维护性 有两种不同的 Java 包 Java 运行时环
  • 如何在 Debian 9 上安装和使用 PHP Composer

    Composer是 PHP 的依赖管理器 类似于Node js 的 npm or Python 的点子 Composer 将提取您的项目所依赖的所有必需的 PHP 包并为您管理它们 本教程提供了在 Debian 9 系统上安装 Compos
  • 如何列出 CentOS 上已安装的软件包

    在本教程中 我们将向您展示如何列出和过滤 CentOS 上已安装的软件包 当您需要在另一台计算机上安装相同的软件包或想要重新安装系统时 了解如何列出 CentOS 系统上已安装的软件包会很有帮助 我们还将向您展示如何检查是否安装了特定的软件
  • 如何检查您的 CentOS 版本

    当您第一次登录 CentOS 计算机时 在进行任何工作之前 您可能需要检查系统上运行的 CentOS 版本 在本教程中 我们将展示几个不同的命令 了解如何检查系统上安装的 CentOS 版本 截至撰写本文时 CentOS Linux 拥有三
  • 如何在 CentOS 8 上添加交换空间

    交换空间是磁盘上的空间 当物理 RAM 内存已满时使用 当 Linux 系统耗尽 RAM 时 非活动页面将从 RAM 移至交换空间 交换空间可以采用专用交换分区或交换文件的形式 通常 在虚拟机上运行 CentOS 时 不存在交换分区 因此唯
  • 配置 Magento 2 在 CentOS 7 上使用 Varnish

    页面速度或加载时间对于在线商店的成功至关重要 加载时间是加载特定页面上的内容所需的总时间 加载时间越长 转化率越低 这也是谷歌考虑确定搜索引擎排名的最重要因素之一 在第一篇文章中 我们在 CentOS 7 机器上安装了 Magento 2
  • 自动启动 wampserver 在 Windows 10 上自动启动

    在向您展示如何自动启动 wampserver 之前 我先简单介绍一下 Wampserver 是 Windows 平台上最好的 Web 开发堆栈之一 与 xampp 相比 我更喜欢它 因为它有方便的托盘菜单 可以让我访问任何配置 您可以从此网
  • 使用 Sed 命令删除行:Linux 文本删除教程

    Using sed命令从文件或流中删除行是常见操作 使用删除行的基本语法sed如下 sed pattern to match d filename Here pattern to match是您要在文件的每一行中匹配的模式 如果一行包含指定
  • 使用 to_sql 将 Python Pandas DataFrame 导出到 SQL

    The to sql函数允许您将存储在 DataFrame 中的记录写入 SQL 数据库 通过使用 SQLAlchemy 可以使用该库支持的任何数据库 在接下来的部分中 我们将更深入地研究此功能并探索更多功能 目录 hide 1 基本语法和
  • Python NumPy arange() 教程

    NumPyarange 函数用于生成给定区间内的值序列 您可以将其视为数字范围生成器 它允许您创建一个 NumPy 数组 其值在指定范围内均匀分布 它提供了更多功能 例如使用浮点数的能力以及显式定义数组中包含的值的间隔的灵活性 在本教程中
  • Python 切片初学者指南

    在本教程中 您将了解切片在 Python 中的工作原理以及如何使用它来操作字符串 列表和元组等序列 我们还将演示 Python 切片对象如何创建可用于对序列进行切片的切片 这些知识将为您提供一个强大的工具来访问序列中的多个项目 以删除多个项
  • Python 中非常规颜色指南

    如果您一直在使用 Python 进行编程 那么您很可能至少遇到过一个提供处理颜色表示和自定义功能的库 From 图像处理从数据可视化到Web应用程序开发 你会发现颜色的使用无处不在 事实上 大多数用于最先进计算机视觉任务的现代深度神经网络都
  • 在 Pandas 中使用 loc 和 MultiIndex DataFrame

    在之前的教程中 我们讨论了locproperty 一种基于标签的数据选择方法 但是您是否知道在使用 loc 处理多级索引时可以优化您的选择 本教程将揭示在 Pandas 中使用 loc 和 MultiIndex DataFrame 的强大功
  • Python图像处理教程(使用OpenCV)

    在本教程中 您将学习如何使用 OpenCV 库在 Python 中处理图像 OpenCV 是一个用于实时图像处理的免费开源库 它用于处理图像 视频甚至直播 但在本教程中 我们将仅将处理图像作为第一步 在开始之前 我们先安装 OpenCV 目
  • 安装和配置 Linux LDAP 服务器

    两天前 一位网站访问者在网站上搜索 LDAP 但没有找到任何结果 这促使我发一篇有关 LDAP 服务器的帖子 因此我们填补了空白 将喜爱的内容带给访问者 目录 hide 1 什么是LDAP 2 LDAP 的用途 3 LDAP 服务器实施
  • Python 海象运算符(Python 3.8 赋值表达式)

    Python 海象运算符 正式名称为赋值表达式运算符 是在 Python 3 8 中引入的 它由冒号后跟等号表示 Python 社区将其称为 海象运算符 因为它类似于海象的一双眼睛和獠牙 目录 hide 1 对海象操作员的需求 2 Walr
  • 15 个用于网络诊断的 Linux ping 命令示例

    感谢 Linux 我们可以使用许多促进网络管理和诊断的工具 从这个意义上说 Linux ping 命令是系统管理员和网络管理员最有用的工具之一 它的基本功能是确定网络中的一台主机是否可达 然而 在这篇文章中 我们将讨论 Linux Ping
  • Matplotlib 教程(使用 pyplot 绘制图形)

    Matplotlib 是 Python 中的一个库 可创建 2D 图形来可视化数据 可视化总是有助于更好地分析数据并增强用户的决策能力 在本 matplotlib 教程中 我们将绘制一些图形并更改一些属性 如字体 标签 范围等 首先 我们将