Matplotlib (Python 绘图库)

2025年3月17日 | 阅读16分钟
Matplotlib Tutorial

与文本数据相比,人类思维更能适应数据的可视化表示。可视化后,事物更容易理解。图表是表示数据的更好方式,因为它使我们能够更有效地分析数据并根据数据分析做出具体决策。在学习 matplotlib 之前,了解数据可视化及其重要性是必要的。

数据可视化

在展示结果方面,图形提供了一种探索数据的绝佳方法。 “数据可视化”这个术语是新的。它传达了数据表示不仅仅是图形表示(而不是文本表示)的概念。

Matplotlib Data Visualization

这有助于在学习和发现数据集时对模式、损坏数据、异常值以及更多内容进行分类。通过一点领域知识,数据可视化可用于在图表和图表中表达和演示关键关系。事实上,静态分析侧重于数据估计和定量描述。它为您提供了一套有用的工具来定性理解。

数据可视化有五种关键图表被使用。

Matplotlib Data Visualization

在组织做出决定之前,必须完成以下五个步骤

Matplotlib Data Visualization
  • 可视化:通过分析原始数据,复杂数据变得更加用户友好、易于理解和易于访问。当用户需要查找特定测量值时,会使用表格数据表示。使用各种图表来显示一个或多个变量的数据模式或关系。
  • 分析:“数据分析”一词指的是清理、检查、转换和建模数据以提取有用信息。无论是商业还是个人决策,我们总是基于过去的经验来做出决策。在做出特定决策时,所有要做的事情就是分析过去。这可能会在未来发生变化,因此任何企业或组织都可以通过正确的分析做出更好的决策。
  • 文档分析:以标准格式组织文档中有用的数据或信息的过程称为文档洞察。
  • 更改数据集:为了更有效地做出决策,需要使用标准数据。

为什么需要数据可视化?

Why need Data Visualization

数据可视化可以执行以下任务

  • 它识别需要改进和关注的领域。
  • 它阐明了因素。
  • 它有助于了解哪个产品应该放在哪里。
  • 预测销售量。

数据可视化优势

数据可视化具有多种优势,有助于企业和组织做出更好的决策

1. 开发信息吸收方法

数据可视化使用户能够访问大量有关业务和运营状况的信息。理解多维数据集之间的关系有助于决策者。使用地图、热图和其他丰富的图形表示,它为数据分析提供了新颖的方法。

可视化数据发现更有可能找到组织所需的信息,从而导致公司比竞争对手更具生产力。

2. 可视化商业关系和模式

在当今竞争激烈的商业环境中,寻找运营状况与业务绩效之间的相关性至关重要,这是数据可视化的一个关键优势。

由于能够进行这种关联,管理人员可以快速识别问题的根本原因。

Benefit of Data Visualization

假设一家食品公司正在查看其月度客户数据,并且数据以条形图的形式呈现,显示该组织的评分在过去几个月在特定地区下降了五分;数据表明客户满意度在该地区是一个问题。

3. 加速您对新兴趋势的响应 数据可视化使决策者能够更有效地理解跨多个数据集的客户行为和市场状况的变化。

通过了解客户情绪和其他数据,公司有机会在竞争对手之前抓住新的商业机会。

4. 地理可视化

这是因为许多网站提供网络服务并引起访问者的兴趣。此类网站需要利用客户信息中已有的基于位置的数据。

多平台数据可视化库 Matplotlib 是一个基于 Numpy 数组的 Python 库。它可以在 shell、Web 应用程序、Python 脚本和其他图形用户界面工具包中使用。

2002 年,John D. Hunter 提出了 matplotlib 的想法。它根据类似 BSD 的许可证分发,并拥有一个蓬勃发展的开发人员社区。最新版本 3.1.1 于 2019 年 7 月 1 日发布,第一个版本于 2003 年发布。

截至 2007 年 6 月 23 日,Python 版本 2.7 到 3.6 支持 Matplotlib 2.0.x。Matplotlib 1.2 开始支持 Python3。支持 Python 2.6 的最新 Matplotlib 版本是 1.4。

Matplotlib 的功能可以通过各种工具包得到增强。其中一些工具可以使用 matplotlib 源代码进行迁移,而另一些则需要外部依赖项,必须单独下载。

  • Bashmap:一个用于绘制地图的工具包,包含海岸线、政治边界和各种地图投影。
  • Cartopy:一个地图库,具有任意点、线、多边形和图像转换功能,以及面向对象的地图投影定义。
  • Excel 功能:实用程序可以使用 Matplotlib 与 Microsoft Excel 交换数据。
  • Mplot3d:使用它来绘制 3D 图形。
  • Natgrid:: 它是 Natgrid 库的一个接口,用于不规则间隔数据的网格化。

Matplotlib 架构

matplotlib 的架构有三个不同的层,它们是:

  • 后端层
  • Artist 层
  • 脚本层

后端层

绘图所需的各种函数在后端层实现,这是图形的底层。后端层有三个基本类:FigureCanvas,它是图形将被绘制的表面;Renderer,是处理表面上绘制的类;以及 Event,它处理鼠标和键盘事件。

Artist 层

架构的第二层是 Artist 层。它负责各种绘图功能,例如轴,它协调在图形画布上使用渲染器。

脚本层

最顶层是脚本层,我们的大部分代码将在那里运行。脚本层中的方法几乎自动处理其他层;我们唯一需要关心的是当前状态(图形和子图)。

Matplotlib 的总体思想一个 Matplotlib 图可以分解为以下部分

General Concept of Matplotlib

Matplotlib 的一般概念 图形

  • 它是一个完整的图形,可以包含多个轴(绘图)。图形可以被认为是一个容纳绘图的画布。
  • 轴(Axes):一个图形可以有多个轴。对于 3D 模型,它由两个或三个 Axis 对象组成。每个 Axes 都有一个标题、一个 x 轴标签和一个 y 轴标签。
  • 轴(Axis):轴是看起来像线条的对象,负责创建图形的限制。
  • Artist:文本对象、Line2D 对象和集合对象都是 Artist 的实例。大多数 Artist 使用 Axes。

安装 Matplotlib

在开始使用绘图函数或 Matplotlib 本身之前,必须先安装它。安装在您计算机上的发行版会影响 matplotlib 的安装方式。以下是安装方法

使用 Anaconda Python 发行版 下载 Anaconda Python 发行版是安装 Matplotlib 的最简单方法。Anaconda 发行版已包含 Matplotlib,因此无需额外安装。

  • 访问 Anaconda 官方网站并单击下载按钮
Installing Matplotlib
  • 根据您的 Python 解释器配置选择下载。
Installing Matplotlib

使用 Anaconda Prompt 安装 Matplotlib

可以使用 Anaconda Prompt 通过输入命令来安装 Matplotlib。要安装 matplotlib,请打开 Anaconda Prompt 并键入以下命令


Installing Matplotlib

使用 pip 安装 Matplotlib

Python 包管理器 pip 也用于安装 matplotlib。打开命令提示符窗口,然后键入以下命令

验证安装

要验证 matplotlib 是否已正确安装,请键入以下命令,包括在终端中调用.__version__。

绘图基本示例

下面是生成简单图的基本示例,程序如下

输出

Basic Example of plotting Graph

使用 Python matplotlib 绘制简单图只需要三行代码。我们可以为 Python matplotlib 库创建的图表添加标题和标签,使其更有意义。示例如下

输出

Basic Example of plotting Graph

与之前的图相比,该图更易于理解。

使用 Pyplot

matplotlib.pyplot 中的一系列命令式函数在 matplotlib 中实现了类似 MATLAB 的功能。创建图形、在图形中创建绘图区域、绘制一些线条、用标签装饰绘图等,都是可以使用 pyplot 函数完成的一些事情。

当我们想快速绘制一些东西而无需创建任何图形或轴时,这是一个有用的工具。

在处理 matplotlib.pyplot 时,某些状态会在函数调用之间保持,以跟踪诸如当前图形和绘图区域之类的内容,并将这些绘图函数定向到当前轴。

pyplot 模块提供了常用的 plot() 函数来绘制图形。让我们看一个简单的例子

输出

Working with Pyplot

程序使用该程序绘制图形的 x 轴和 y 轴,范围从 0 到 5。如果我们向 plot() 函数提供单个列表,Matplotlib 会自动生成 x 值,假设它是一个 y 值序列。默认的 x 向量与 y 向量的长度相同,但从 0 开始,因为我们知道 Python 索引从 0 开始。因此,[0, 1, 2, 3, 4,] 是 x 数据。

我们可以传递任意数量的参数给 plot()。例如,要绘制 x 与 y 的关系,我们可以这样做:

输出

Working with Pyplot

格式化绘图样式

第三个参数是可选的,它是一个格式字符串,指定了绘图的颜色和线型。如上绘制的图形所示,默认格式字符串是“b-”,即实心蓝色。考虑以下插图,其中绘制了带红圆圈的图形。

输出

Working with Pyplot

示例格式字符串

'b'用于蓝色标记,具有默认形状。
'ro'红圈
'-g'绿色实线
'--'虚线,默认颜色
'^k:'黑色向上三角形标记,由虚线连接

matplotlib 支持以下颜色缩写

Character颜色
'b' 蓝色
'g'绿色
'r'红色
'c'青色
'm'洋红色
'y'黄色
'k'黑色
'w'白色

使用分类变量绘图

Matplotlib 允许我们将分类变量直接传递给许多绘图函数:考虑以下示例

输出

Working with Pyplot

在上面的程序中,我们使用 **subplot()** 函数绘制了分类图。让我们看一下 subplot() 函数。

什么是 subplot()

在单个图形中绘制两个或多个绘图是 Matplotlib subplot() 函数的定义方式。此技术可用于分离在同一轴上绘制的两个图形。Matplotlib 支持所有子图,包括 2x2 网格、2x1 垂直和 2x1 水平子图。

它接受三个参数:Nrows、ncols 和 index。它们分别表示索引、行数和列数。

可以按以下方式调用 subplot() 函数

参数

  • *args

子图的位置由三位数整数或三个单独的整数指定。在具有 nrows 行和 ncol 列的网格上,如果三个整数分别是 nrows、ncols 和 index,则子图将占据索引位置。

参数 pos 是一个三位数整数,第一位数表示行数,第二位数表示列数,第三位数表示子图的索引。例如,子图与 subplot (132) 相同。

注意:传入的整数必须小于 10。

  • **kwargs

subplot() 函数还接受返回的轴基类的关键字参数。

请看以下示例

创建不同类型的图

1. 折线图

折线图是显示信息作为一系列线状的图表之一。图表由 plot() 函数绘制。折线图易于绘制,让我们看下面的例子

输出

Creating different types of graph

我们可以通过导入样式模块来自定义图形。样式模块将内置到 matplotlib 安装中。它包含各种函数,可以使绘图更具吸引力。在下面的程序中,我们正在使用样式模块

输出

Creating different types of graph

在 Matplotlib 中,图形(plt.Figure 类的实例)可以被视为一个单一的容器,其中包含表示轴、图形、文本和标签的所有对象。

示例-3

输出

Creating different types of graph

matplotlib 提供了 **fill_between()** 函数,该函数用于根据用户定义的逻辑填充线条周围的区域。

示例 4

输出

Creating different types of graph

2. 条形图

条形图是最常见的图表类型之一,用于显示与分类变量相关的数据。Matplotlib 提供 **bar()** 来创建条形图,它接受以下参数:分类变量、它们的值和颜色。

输出

Creating different types of graph

另一个函数 **barh()** 用于创建水平条形图。它接受 **xerr** 或 **yerr** 作为参数(在垂直图形的情况下)来描绘我们数据中的方差,如下所示

输出

Creating different types of graph

让我们看另一个使用 **style()** 函数的例子

输出

Creating different types of graph

与垂直堆叠类似,条形图通过使用 bottom 参数堆叠在一起,并定义我们想要堆叠在下方并具有其值的条形图。

输出

Creating different types of graph

3. 饼图

饼图是一个圆形图,它被分解成扇形或饼的切片。它通常用于表示百分比或比例数据,其中每个饼的切片代表一个特定的类别。让我们看下面的例子

输出

Creating different types of graph

4. 直方图

理解条形图和直方图之间的区别是第一步。条形图用于比较不同的实体,而直方图用于表示分布。直方图是一种条形图,它将一组值的频率与一个值范围进行比较。

例如,我们绘制一个关于 bin 的直方图,使用来自不同年龄组的数据。现在,由 bin 表示的值范围被划分为一系列区间。大多数 bin 的大小相同。

输出

Creating different types of graph

让我们看另一个绘制直方图的例子

输出

Creating different types of graph

5. 散点图

在确定一个变量对另一个变量有多大影响时,散点图通常用于比较变量。数据表示为一系列点。一个变量的值决定了点在水平和垂直轴上的位置,分配给每个点。另一方面,另一个变量的值分配给每个点。

让我们看下面的简单例子

示例-1

输出

Creating different types of graph

示例-2

输出

Creating different types of graph

6. 3D 图形绘制

Matplotlib 最初是为二维绘图开发的。它的 1.0 版本建立在二维显示之上,具有一些三维绘图实用程序,结果是一套方便的三维数据可视化工具。

可以通过导入 **mplot3d** 工具包来创建三维图,该工具包包含在主要的 Matplotlib 安装中。

当此模块导入到程序中时,可以通过将关键字 **projection='3d'** 传递给任何常规的轴创建例程来创建三维轴。

让我们看一个简单的 3D 图

示例-1

输出

Creating different types of graph

示例-2

输出

Creating different types of graph

注意:我们可以使用 plot3D() 来绘制简单的 3D 折线图。

示例-3

输出

Creating different types of graph

Matplotlib 的重要函数

函数描述
plot(x 轴值, y 轴值)它用于绘制 x 轴值与 y 轴值之间的简单折线图。show() 用于显示图形。
title("字符串")它用于将图形的标题设置为字符串指定的值。
xlabel("字符串")它用于将 x 轴的标签设置为字符串指定的值。
ylabel("字符串")它用于将 y 轴的标签设置为字符串指定的值。
figure()它用于控制图形级别的属性。
subplots(nrows, ncol,index)它用于将子图添加到最近的图形中。
subtitle("字符串")它为字符串指定的图形添加一个通用标题。
subplots(nrows,ncols,figsize)它提供了一种简单的方法,通过一次调用即可创建子图,并返回一个图形和多个轴的元组。
set_title("字符串")这是一个轴级别的方法,用于设置指定为字符串的子图的标题。
bar(分类变量, 值, 颜色)它用于创建垂直条形图。
barh(分类变量, 值, 颜色)它用于创建水平条形图。
legend(loc)它用于创建图形的图例。
xtricks(index, 分类变量)它用于设置或获取 x 轴的当前刻度位置标签。
pie(值, 分类变量)它用于创建饼图。
hist(值, bin 的数量)它用于创建直方图。
xlim(起始值, 结束值)它用于设置 x 轴值的限制。
ylim(起始值, 结束值)它用于设置 y 轴值的限制。
scatter(x 轴值, y 轴值)它用于绘制以 y 轴值为基准的 x 轴值的散点图。
axes()它用于将轴添加到最近的图形中。
set_xlabel("字符串")这是一个轴级别的方法,用于设置指定为字符串的图的 x 标签。
set_ylabel("字符串")它用于设置指定为字符串的图的 y 标签。
scatter3D(x 轴值, y 轴值)它用于绘制以 y 轴值为基准的 x 轴值的三维散点图。
plot3D(x 轴值, y 轴值)它用于绘制以 y 轴值为基准的 x 轴值的三维折线图。

本教程涵盖了 Python 库 matplotlib,对数据可视化进行了简要概述,以及数据可视化在组织决策过程中的重要性。为了提供数据的可视化表示,我们绘制了各种类型的图形。