Skip to content

Matplotlib - Jupyter Notebook

Matplotlib - 在 Jupyter Notebook 中使用

Section titled “Matplotlib - 在 Jupyter Notebook 中使用”

Jupyter Notebook(以及相关的工具,如 JupyterLab、Google Colab、VS Code Notebooks)是一个交互式计算环境,允许您创建和共享包含实时代码、公式、可视化和叙述性文本的文档。它在数据科学和科学计算领域非常流行。

Matplotlib 与 Jupyter 无缝集成,允许您将图表直接嵌入到 Notebook 中,这使其成为探索性数据分析和分享结果的理想选择。

如果您通过 Anaconda 安装了 Python,通常可以从 Anaconda Navigator 图形用户界面启动 Jupyter Notebook 或 JupyterLab。

或者,您可以从终端或命令提示符启动它(如果使用环境,请确保您的目标 conda 环境处于激活状态):

# To start Jupyter Notebook
jupyter notebook
# To start JupyterLab (a more modern interface)
jupyter lab

这通常会在您的 Web 浏览器中打开一个新标签页,显示 Jupyter 文件浏览器,地址通常类似于 http://localhost:8888/...。

从文件浏览器视图中,您可以导航目录并创建新的 Notebook。单击“New”(或等效按钮,取决于 Jupyter 版本/界面)并选择所需的内核(例如,“Python 3”)以创建一个新的 .ipynb notebook 文件。

在 Jupyter 中使用 Matplotlib 的关键功能是能够将图表直接显示在生成它们的代码单元下方。这通常是默认启用的,但确保此行为的标准方法是使用 %matplotlib inline 魔术命令。

import matplotlib.pyplot as plt
import numpy as np
# 用于在行内显示图表的魔术命令
%matplotlib inline
# --- 示例图表 ---
x = np.linspace(0, 5, 50)
y = x**2
plt.figure()
plt.plot(x, y)
plt.title('Square Function Plot')
plt.xlabel('x')
plt.ylabel('x^2')
plt.grid(True)
# 这里不需要 plt.show()。
# 图表在代码单元执行后会出现在下方。

当您运行此单元格(例如,按 Shift+Enter)时,图表图像将在 Notebook 的输出区域渲染并嵌入。

交互式后端 (Interactive Backends)(可选)

Section titled “交互式后端 (Interactive Backends)(可选)”

虽然 %matplotlib inline 生成静态图像,但 Jupyter 也支持交互式 Matplotlib 后端。这些后端允许直接在 Notebook 输出中进行平移、缩放以及有时其他交互操作。

常见的交互式后端包括:

  • %matplotlib notebook:在输出单元格内提供基本交互功能(可能需要 ipympl 库:pip install ipympl)。
  • %matplotlib widget:一个更现代化、功能更丰富的交互式后端,也需要 ipympl。
  • %matplotlib qt:在单独的 Qt 窗口中打开图表(需要 Qt 绑定,如 PyQt5 或 PySide6)。
  • %matplotlib tk:在单独的 Tkinter 窗口中打开图表。

要使用交互式后端,请在 Notebook(或会话)开头将 %matplotlib inline 替换为所需的魔术命令。

# 使用 'widget' 后端示例 (需要 ipympl)
# pip install ipympl
# jupyter labextension install @jupyter-widgets/jupyterlab-manager jupyter-matplotlib
import matplotlib.pyplot as plt
import numpy as np
%matplotlib widget
x = np.linspace(0, 2*np.pi, 100)
y = np.sin(x)
fig, ax = plt.subplots()
ax.plot(x, y)
ax.set_title('Interactive Sine Plot (widget)')
ax.grid(True)
# 对于交互式后端,有时需要 plt.show()
# 来初步渲染或更新图表,具体取决于用法。
# plt.show() # 在 widget 后端通常不需要严格调用即可初步显示。

选择行内(静态)还是交互式后端取决于您的需求。行内后端简单,适用于静态报告,而交互式后端更适合动态探索数据。