使用 Python 中的 Matplotlib 创建图形

MatplotlibMatplotlibBeginner
立即练习

This tutorial is from open-source community. Access the source code

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

本实验将指导你使用 Python 中的 Matplotlib 库创建带有标题、副标题和全局标签的图形。你将学习如何创建不同类型的振荡图,以及如何向图形添加全局 x 轴或 y 轴标签。

虚拟机提示

虚拟机启动完成后,点击左上角切换到“笔记本”标签,以访问 Jupyter Notebook 进行练习。

有时,你可能需要等待几秒钟让 Jupyter Notebook 完成加载。由于 Jupyter Notebook 的限制,操作验证无法自动化。

如果你在学习过程中遇到问题,随时向 Labby 提问。课程结束后提供反馈,我们将立即为你解决问题。

创建阻尼和无阻尼振荡图

首先,我们将创建一个包含两个子图的图形,一个用于绘制阻尼振荡,另一个用于绘制无阻尼振荡。我们将使用 np.linspace() 函数创建一个时间值数组,然后使用 np.cos()np.exp() 函数绘制每种振荡类型对应的振幅值。

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0.0, 5.0, 501)

fig, (ax1, ax2) = plt.subplots(1, 2, layout='constrained', sharey=True)
ax1.plot(x, np.cos(6*x) * np.exp(-x))
ax1.set_title('damped')
ax1.set_xlabel('time (s)')
ax1.set_ylabel('amplitude')

ax2.plot(x, np.cos(6*x))
ax2.set_xlabel('time (s)')
ax2.set_title('undamped')

fig.suptitle('Different types of oscillations', fontsize=16)

plt.show()

为图形添加全局 x 轴和 y 轴标签

接下来,我们将为一个展示不同公司随时间变化的相对股价的图形添加全局 x 轴和 y 轴标签。我们将使用 np.genfromtxt() 函数读取一个包含股价数据的 CSV 文件,然后使用子图绘制每个公司的数据。我们将使用 fig.supxlabel()fig.supylabel() 方法为图形添加全局 x 轴和 y 轴标签。

from matplotlib.cbook import get_sample_data

with get_sample_data('Stocks.csv') as file:
    stocks = np.genfromtxt(
        file, delimiter=',', names=True, dtype=None,
        converters={0: lambda x: np.datetime64(x, 'D')}, skip_header=1)

fig, axs = plt.subplots(4, 2, figsize=(9, 5), layout='constrained',
                        sharex=True, sharey=True)
for nn, ax in enumerate(axs.flat):
    column_name = stocks.dtype.names[1+nn]
    y = stocks[column_name]
    line, = ax.plot(stocks['Date'], y / np.nanmax(y), lw=2.5)
    ax.set_title(column_name, fontsize='small', loc='left')
fig.supxlabel('Year')
fig.supylabel('Stock price relative to max')

plt.show()

总结

在本实验中,你学习了如何使用 Python 中的 Matplotlib 库创建带有标题和副标题的图形。你还学习了如何为图形添加全局 x 轴和 y 轴标签。这些技能对于创建清晰且信息丰富的数据可视化非常有用。