Matplotlib 数据可视化

PythonPythonBeginner
立即练习

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

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

简介

本实验旨在向你介绍使用 Matplotlib 进行数据可视化的基础知识。Matplotlib 是一个广受欢迎的用于 Python 的数据可视化库,它提供了广泛的选项来创建绘图、图表和图形。

虚拟机使用提示

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

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

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

准备工作

在开始之前,我们需要确保已安装 Matplotlib。你可以使用 pip 通过运行以下命令来安装它:

!pip install matplotlib

安装完成后,我们需要导入该库并设置环境:

import matplotlib.pyplot as plt
import numpy as np

## Fixing random state for reproducibility
np.random.seed(19680801)

## Create new Figure with black background
fig = plt.figure(figsize=(8, 8), facecolor='black')

## Add a subplot with no frame
ax = plt.subplot(frameon=False)

生成随机数据

在这一步中,我们将生成用于创建绘图的随机数据。

## Generate random data
data = np.random.uniform(0, 1, (64, 75))
X = np.linspace(-1, 1, data.shape[-1])
G = 1.5 * np.exp(-4 * X ** 2)

创建折线图

我们将使用上一步生成的随机数据来创建折线图。

## Generate line plots
lines = []
for i in range(len(data)):
    ## Small reduction of the X extents to get a cheap perspective effect
    xscale = 1 - i / 200.
    ## Same for linewidth (thicker strokes on bottom)
    lw = 1.5 - i / 100.0
    line, = ax.plot(xscale * X, i + G * data[i], color="w", lw=lw)
    lines.append(line)

设置界限并移除刻度

在这一步中,我们将设置 y 轴界限并移除绘图中的刻度。

## Set y limit (or first line is cropped because of thickness)
ax.set_ylim(-1, 70)

## No ticks
ax.set_xticks([])
ax.set_yticks([])

添加标题

我们将为绘图添加一个标题。

## 2 part titles to get different font weights
ax.text(0.5, 1.0, "MATPLOTLIB ", transform=ax.transAxes,
        ha="right", va="bottom", color="w",
        family="sans-serif", fontweight="light", fontsize=16)
ax.text(0.5, 1.0, "UNCHAINED", transform=ax.transAxes,
        ha="left", va="bottom", color="w",
        family="sans-serif", fontweight="bold", fontsize=16)

为绘图添加动画效果

现在,我们将通过把数据向右移动并填充新值来为绘图添加动画效果。

import matplotlib.animation as animation

def update(*args):
    ## Shift all data to the right
    data[:, 1:] = data[:, :-1]

    ## Fill-in new values
    data[:, 0] = np.random.uniform(0, 1, len(data))

    ## Update data
    for i in range(len(data)):
        lines[i].set_ydata(i + G * data[i])

    ## Return modified artists
    return lines

## Construct the animation, using the update function as the animation director.
anim = animation.FuncAnimation(fig, update, interval=10, save_count=100)
plt.show()

总结

在本实验中,我们学习了使用Matplotlib进行数据可视化的基础知识。我们生成了随机数据,创建了折线图,设置了界限并移除了刻度,添加了标题,还为绘图添加了动画效果。这些只是基础知识,Matplotlib还提供了更多用于定制和增强可视化效果的选项。