Matplotlib - Jupyter Notebook
Matplotlib - 在 Jupyter Notebook 中使用
Section titled “Matplotlib - 在 Jupyter Notebook 中使用”Jupyter Notebook(以及相关的工具,如 JupyterLab、Google Colab、VS Code Notebooks)是一个交互式计算环境,允许您创建和共享包含实时代码、公式、可视化和叙述性文本的文档。它在数据科学和科学计算领域非常流行。
Matplotlib 与 Jupyter 无缝集成,允许您将图表直接嵌入到 Notebook 中,这使其成为探索性数据分析和分享结果的理想选择。
启动 Jupyter
Section titled “启动 Jupyter”如果您通过 Anaconda 安装了 Python,通常可以从 Anaconda Navigator 图形用户界面启动 Jupyter Notebook 或 JupyterLab。
或者,您可以从终端或命令提示符启动它(如果使用环境,请确保您的目标 conda 环境处于激活状态):
# To start Jupyter Notebookjupyter notebook
# To start JupyterLab (a more modern interface)jupyter lab这通常会在您的 Web 浏览器中打开一个新标签页,显示 Jupyter 文件浏览器,地址通常类似于 http://localhost:8888/...。
从文件浏览器视图中,您可以导航目录并创建新的 Notebook。单击“New”(或等效按钮,取决于 Jupyter 版本/界面)并选择所需的内核(例如,“Python 3”)以创建一个新的 .ipynb notebook 文件。
行内绘图 (Plotting Inline)
Section titled “行内绘图 (Plotting Inline)”在 Jupyter 中使用 Matplotlib 的关键功能是能够将图表直接显示在生成它们的代码单元下方。这通常是默认启用的,但确保此行为的标准方法是使用 %matplotlib inline 魔术命令。
import matplotlib.pyplot as pltimport 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 pltimport 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 后端通常不需要严格调用即可初步显示。选择行内(静态)还是交互式后端取决于您的需求。行内后端简单,适用于静态报告,而交互式后端更适合动态探索数据。