Matplotlib 折线图基础

MatplotlibBeginner
立即练习

介绍

Matplotlib 是一个用于在 Python 中创建静态、动态和交互式可视化的综合性库。它是最流行的数据可视化库之一,对于任何使用 Python 的数据科学家或分析师来说都至关重要。

折线图是最基本且应用最广泛的图表类型之一。它将信息显示为一系列称为“标记点”(markers)的数据点,这些点通过直线段连接。它常用于可视化数据随时间间隔变化的趋势——即时间序列——因此折线图通常是按时间顺序绘制的。

在本实验中,你将学习如何从头开始创建一个简单的折线图。我们将涵盖整个过程:准备数据、绘制图表、为坐标轴添加描述性标签,最后将图表保存为图像文件,你可以在 LabEx 环境中直接查看。

这是一个实验(Guided Lab),提供逐步指导来帮助你学习和实践。请仔细按照说明完成每个步骤,获得实际操作经验。根据历史数据,这是一个 初级 级别的实验,完成率为 84%。获得了学习者 100% 的好评率。

准备 x 和 y 数据列表

在此步骤中,我们将准备绘图所需的数据。在可视化任何内容之前,你需要数据。对于简单的二维折线图,你需要两组数据:一组用于 x 轴(水平轴),另一组用于 y 轴(垂直轴)。

我们将使用 Python 列表来存储数据。让我们创建一个代表几年人口增长的简单数据集。

首先,从左侧的文件浏览器中打开位于 ~/project 目录下的 main.py 文件。该文件已包含必要的导入语句。

现在,将以下代码添加到 main.py 中以创建两个列表,xy

import matplotlib.pyplot as plt

## Data for plotting
x = [2018, 2019, 2020, 2021, 2022]
y = [10, 12, 15, 18, 22]

这里,x 代表年份,y 代表对应年份的人口(以百万为单位)。这两个列表将作为我们折线图的坐标。

使用 plt.plot(x, y) 绘制折线图

在此步骤中,我们将使用准备好的数据来创建实际的图表。我们导入为 plt 的 Matplotlib pyplot 模块提供了一个名为 plot() 的函数,非常适合此任务。

plt.plot() 函数接受两个主要参数:x 轴的数据和 y 轴的数据。然后,它将绘制一条连接由这些坐标定义的点的线。

将以下行添加到你的 main.py 脚本中,紧跟在你在上一步创建的数据列表之后。

import matplotlib.pyplot as plt

## Data for plotting
x = [2018, 2019, 2020, 2021, 2022]
y = [10, 12, 15, 18, 22]

## Create the plot
plt.plot(x, y)

这一行代码告诉 Matplotlib 使用 xy 列表作为坐标来创建折线图。但是,如果你现在运行脚本,你还看不到任何内容。我们仍然需要添加标签并显式地将图表保存到文件。

使用 plt.xlabel() 添加 x 轴标签

在此步骤中,我们将为 x 轴添加一个标签。没有标签的图表通常是无意义的,因为观看者不知道坐标轴代表什么。这是创建清晰且信息丰富的可视化的关键部分。

Matplotlib 提供了 plt.xlabel() 函数来为 x 轴添加标签。你只需将所需的标签作为字符串传递给此函数即可。

让我们为图表添加一个“Year”(年份)标签。将以下行添加到你的 main.py 脚本中,在 plt.plot() 调用之后。

import matplotlib.pyplot as plt

## Data for plotting
x = [2018, 2019, 2020, 2021, 2022]
y = [10, 12, 15, 18, 22]

## Create the plot
plt.plot(x, y)

## Add x-axis label
plt.xlabel("Year")

现在,我们图表的水平轴将被清晰地标记为“Year”。

使用 plt.ylabel() 添加 y 轴标签

在此步骤中,我们将为 y 轴添加一个标签,从而完成我们图表的基本标注。与 x 轴一样,y 轴也需要一个描述性的标签,以便观看者能够理解数据。

用于此目的的函数是 plt.ylabel(),其工作方式与 plt.xlabel() 完全相同。你将标签文本作为字符串传递。

让我们为图表添加一个“Population”(人口)标签。将以下行添加到你的 main.py 脚本中,紧跟在 plt.xlabel() 调用之后。

import matplotlib.pyplot as plt

## Data for plotting
x = [2018, 2019, 2020, 2021, 2022]
y = [10, 12, 15, 18, 22]

## Create the plot
plt.plot(x, y)

## Add x-axis label
plt.xlabel("Year")

## Add y-axis label
plt.ylabel("Population (in millions)")

现在,随着两个轴都已添加标签,我们的图表也更加易于理解了。

使用 plt.show() 显示图表

在最后一步,我们将生成并查看我们的图表。在典型的桌面环境中,你可能会使用 plt.show() 在新窗口中显示图表。然而,在像 LabEx 这样的基于 Web 的环境中,我们无法打开 GUI 窗口。

取而代之的是,我们将使用 plt.savefig() 函数将图表保存到图像文件。此函数将当前图形保存到项目目录中的一个文件。

将以下行添加到你的 main.py 脚本的末尾。这将把图表保存为名为 line_plot.png 的 PNG 图像。

import matplotlib.pyplot as plt

## Data for plotting
x = [2018, 2019, 2020, 2021, 2022]
y = [10, 12, 15, 18, 22]

## Create the plot
plt.plot(x, y)

## Add x-axis label
plt.xlabel("Year")

## Add y-axis label
plt.ylabel("Population (in millions)")

## Save the plot to a file
plt.savefig("line_plot.png")

现在,在 WebIDE 中打开一个终端(你可以使用终端面板中的 + 图标或菜单 Terminal > New Terminal)。使用以下命令运行你的脚本:

python3 main.py

命令完成后,你将在左侧的文件浏览器中看到一个名为 line_plot.png 的新文件。双击 line_plot.png 打开它,即可看到你完成的折线图!

Line plot

总结

恭喜!你已成功使用 Matplotlib 创建并保存了你的第一个折线图。

在本实验中,你学习了创建基本图表的关键流程:

  1. 准备数据: 你创建了 Python 列表来存储 x 轴和 y 轴的数据。
  2. 绘制数据: 你使用 plt.plot() 从你的数据生成了折线图。
  3. 添加标签: 你通过使用 plt.xlabel()plt.ylabel() 添加标签,使图表更具信息量。
  4. 保存图表: 你学会了使用 plt.savefig() 将可视化内容保存到文件,这在非 GUI 环境中至关重要。

这仅仅是你使用 Matplotlib 可以做的事情的开始。你现在可以基于这些技能创建更复杂和定制化的可视化内容。继续探索吧!