Matplotlib 自定义折线图

MatplotlibBeginner
立即练习

介绍

Matplotlib 是一个强大的 Python 库,用于创建静态、动态和交互式可视化。虽然创建基本图表很简单,但对其进行自定义是使你的数据清晰、易于理解且具有视觉吸引力的关键。

在本实验中,你将从一个简单的折线图开始,并逐步对其进行自定义。你将学习如何更改线条颜色、为数据点添加标记、修改线条样式、为图表添加标题以及调整轴限制。

由于本实验环境使用 WebIDE,我们无法在单独的 GUI 窗口中显示图表。相反,我们将使用 plt.savefig() 将每个图表保存为图像文件。然后,你可以在 IDE 中直接查看生成的图像。

让我们开始吧!

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

使用 plt.plot(color='red') 绘制自定义颜色的线条

在本步骤中,你将学习如何更改图表中线条的颜色。默认情况下,Matplotlib 会按预定义的颜色集循环显示。但是,你可以使用 plt.plot() 函数中的 color 参数轻松指定你选择的颜色。

首先,让我们绘制一个正弦波的基本图表。我们将使用 NumPy 来生成数据点。

在左侧文件浏览器中打开位于 ~/project 目录下的 main.py 文件。用以下代码替换其内容。此代码将绘制一个正弦波并将其颜色设置为红色。

import matplotlib.pyplot as plt
import numpy as np

## Generate data for the plot
x = np.arange(0, 10, 0.1)
y = np.sin(x)

## Plot the data with a custom color
plt.plot(x, y, color='red')

## Save the plot to a file
plt.savefig('/home/labex/project/plot_color.png')

print("Plot saved as plot_color.png")

更新 main.py 文件后,请保存它。现在,在 IDE 底部的终端中运行脚本:

python3 main.py

你将在终端中看到以下输出:

Plot saved as plot_color.png

一个名为 plot_color.png 的新文件将出现在 ~/project 目录中。双击它以打开并查看你的第一个自定义图表。你将看到一条红色的正弦波。

Plot color

使用 plt.plot(marker='o') 添加标记

在本步骤中,你将为数据点添加标记。标记有助于突出显示线上的每个数据点的确切位置,当数据点稀疏时,这会特别有用。

你可以使用 plt.plot() 函数中的 marker 参数来添加标记。有许多可用的标记样式,例如 'o' 表示圆圈,'x' 表示叉号,以及 '*' 表示星号。

让我们修改 main.py 文件,为我们的图表添加圆圈标记。为了保留上一步的进度,我们还将输出文件名更改为 plot_marker.png

使用以下代码更新 main.py 文件:

import matplotlib.pyplot as plt
import numpy as np

## Generate data for the plot
x = np.arange(0, 10, 0.1)
y = np.sin(x)

## Plot the data with a custom color and marker
plt.plot(x, y, color='red', marker='o')

## Save the plot to a new file
plt.savefig('/home/labex/project/plot_marker.png')

print("Plot saved as plot_marker.png")

保存文件并在终端中再次运行脚本:

python3 main.py

终端将显示此输出:

Plot saved as plot_marker.png

现在,在文件浏览器中找到新的 plot_marker.png 文件并双击它。你将看到红色线条的每个数据点上都有了小的圆圈。

Plot marker

使用 plt.plot(linestyle='--') 设置线条样式

在本步骤中,你将学习如何更改线条本身的样式。默认是实线,但你可以将其更改为虚线、点线或其他样式,以便在同一图表上区分多条线,或者仅仅是为了美观。

这是通过 linestyle 参数(或其简写 ls)完成的。常见的样式包括 '--' 表示虚线,':' 表示点线,以及 '-.' 表示点划线。

让我们更新图表以使用虚线。按如下方式修改 main.py 文件。我们还将输出文件名更改为 plot_linestyle.png

import matplotlib.pyplot as plt
import numpy as np

## Generate data for the plot
x = np.arange(0, 10, 0.1)
y = np.sin(x)

## Plot the data with custom color, marker, and line style
plt.plot(x, y, color='red', marker='o', linestyle='--')

## Save the plot to a new file
plt.savefig('/home/labex/project/plot_linestyle.png')

print("Plot saved as plot_linestyle.png")

保存更改并在终端中执行脚本:

python3 main.py

你将看到确认消息:

Plot saved as plot_linestyle.png

打开新创建的 plot_linestyle.png 文件。你会注意到连接标记的线条现在是虚线而不是实线。

Plot linestyle

使用 plt.title() 添加标题

没有标题的图表可能会令人费解。为你的图表添加一个描述性的标题至关重要,这样观众就能立即理解图表所代表的内容。在 Matplotlib 中,你可以使用 plt.title() 函数来添加标题。

在本步骤中,你将为图表添加标题“Sine Wave”。此函数在保存图形之前调用。

修改你的 main.py 文件以包含 plt.title() 调用。新的输出文件将是 plot_title.png

import matplotlib.pyplot as plt
import numpy as np

## Generate data for the plot
x = np.arange(0, 10, 0.1)
y = np.sin(x)

## Plot the data with customizations
plt.plot(x, y, color='red', marker='o', linestyle='--')

## Add a title to the plot
plt.title('Sine Wave')

## Save the plot to a new file
plt.savefig('/home/labex/project/plot_title.png')

print("Plot saved as plot_title.png")

保存文件并运行脚本:

python3 main.py

输出将是:

Plot saved as plot_title.png

打开 plot_title.png 查看你的图表。它现在应该在顶部显示标题“Sine Wave”。

Plot title

使用 plt.xlim() 和 plt.ylim() 调整坐标轴范围

有时,你可能希望聚焦于图表的特定区域,或者在数据周围添加一些填充。你可以分别使用 plt.xlim()plt.ylim() 函数来控制 x 轴和 y 轴的范围。

在最后一步中,我们将调整轴以“放大”正弦波的一部分。我们将 x 轴范围设置为 0 到 5,y 轴范围设置为 -1.5 到 1.5。这将为我们的图表提供一些垂直填充。

使用最终版本的代码更新你的 main.py 文件。输出将保存到 plot_final.png

import matplotlib.pyplot as plt
import numpy as np

## Generate data for the plot
x = np.arange(0, 10, 0.1)
y = np.sin(x)

## Plot the data with customizations
plt.plot(x, y, color='red', marker='o', linestyle='--')

## Add a title
plt.title('Sine Wave')

## Adjust the axis limits
plt.xlim(0, 5)
plt.ylim(-1.5, 1.5)

## Save the final plot to a file
plt.savefig('/home/labex/project/plot_final.png')

print("Plot saved as plot_final.png")

保存文件并最后一次运行脚本:

python3 main.py

你将收到最终确认:

Plot saved as plot_final.png

现在,打开 plot_final.png。与之前的图表进行比较。你将看到 x 轴现在结束于 5,并且由于新的 y 轴限制,正弦波的上方和下方有更多空间。

Plot final

总结

恭喜你完成了本次实验!你已成功学会了如何自定义一个基础的 Matplotlib 折线图,使其更具信息量和视觉吸引力。

在本次实验中,你练习了:

  • 使用 plt.plot() 中的 color 参数更改线条颜色。
  • 使用 marker 参数添加数据点标记。
  • 使用 linestyle 参数设置线条样式。
  • 使用 plt.title() 函数添加描述性标题。
  • 使用 plt.xlim()plt.ylim() 调整轴范围。

这些是为数据分析和演示创建专业级图表的基本技能。你可以尝试不同的颜色、标记和线条样式,或者使用 plt.xlabel()plt.ylabel() 为 x 轴和 y 轴添加标签,进行进一步的实验。