Jupyter中使用Matplotlib生成并保存SVG矢量图的方法详解

Jupyter 输出矢量图详解

本文将介绍如何在 Jupyter 环境中输出矢量图,主要涉及 Matplotlib 库与 SVG 格式的结合。矢量图具有无损缩放特性,适合科学计算可视化与报告生成。

操作步骤

  1. 确保 Jupyter 环境已安装 Matplotlib 库。使用以下命令安装:
    pip install matplotlib
  2. 创建 Jupyter 笔记本并导入必要的模块:
    import matplotlib.pyplot as plt
    import numpy as np
  3. 生成数据并绘制图形。例如绘制正弦曲线:
    x = np.linspace(0, 2*np.pi, 100)
    y = np.sin(x)
    plt.plot(x, y)
  4. 保存为 SVG 文件:
    plt.savefig("sine_wave.svg", format="svg")
    plt.show()

命令示例与解释

以下命令将生成 SVG 文件并显示图形:

Jupyter中使用Matplotlib生成并保存SVG矢量图的方法详解

plt.figure(figsize=(8, 4))
plt.plot(x, y, color="blue", linewidth=2)
plt.title("SVG 正弦曲线")
plt.xlabel("角度 (弧度)")
plt.ylabel("正弦值")
plt.grid(True)
plt.savefig("sine_wave.svg", dpi=300, transparent=True)
plt.show()

关键参数说明:

  • format=”svg”:指定输出格式为 SVG
  • dpi=300:设置图像分辨率
  • transparent=True:设置背景透明

注意事项

  • SVG 文件通常比位图文件(如 PNG)更大,但支持无限缩放
  • 复杂图形可能因 SVG 压缩导致轻微失真
  • 在服务器环境下,确保输出路径存在,避免保存失败

实用技巧

  1. 批量导出多个图形:
    for i in range(5):
        plt.plot(x, np.sin(x + i/2))
        plt.savefig(f"pattern_{i}.svg")
        plt.clf()
  2. 嵌入 SVG 到 HTML 报告:
    <img src="sine_wave.svg" alt="矢量图示例" style="width: 100%;">
  3. 优化 SVG 大小:
    import svgwrite
    with open("optimized.svg", "w") as f:
        dwg = svgwrite.Drawing("optimized.svg")
        # 添加 SVG 元素
        dwg.save()