Woxi 绘图教程:从 Plot 到 SVG 导出,5个技巧画出出版级数学图表

原创2026-10-23 18:25:291,035 阅读
文章标签:编程语言解释器CLI科学计算桌面应用跨平台

Woxi 绘图教程:从 Plot 到 SVG 导出,5个技巧画出出版级数学图表

Woxi 是一个用 Rust 实现的 Wolfram Language 解释器("Wolfram oxidized"),内置 Plot、Plot3D、BarChart、Histogram 等完整的绘图函数,并支持将图表一键导出为 SVG 矢量文件。本文面向新手,用 5 个技巧带你从第一行 Plot 写起,最终得到可以直接放进论文或报告的出版级数学图表。

1️⃣ 准备工作:30 秒搭好 Woxi 绘图环境

Woxi 支持 CLI 脚本、Jupyter Notebook 和浏览器 Playground 三种方式运行绘图代码,安装只需一行命令:

cargo install woxi

也提供 npm 包 woxi-wasm(npm install woxi-wasm)和 Python 包(pip install woxi)。安装完成后验证一下:

woxi eval "1 + 2"
# 3

三种运行方式一览:

  • CLI 脚本:woxi run my_plot.wls 直接执行 .wls 脚本
  • REPL 交互:woxi repl 中逐行实验参数
  • Jupyter / Studio:woxi install-kernel 安装内核后,图表直接在笔记本里以 SVG 渲染

不想装?官方提供完全运行在浏览器里的 JupyterLite 实例,开箱即用。下面先展示命令行工作流,Jupyter 的效果后文配图说明。

Woxi Playground 浏览器内在线体验 Woxi 数学绘图

2️⃣ 技巧一:一行 Plot 画出函数曲线

Plot[f, {x, xmin, xmax}] 是最核心的函数绘图入口。先画出正弦曲线:

Plot[Sin[x], {x, 0, 2 Pi}]

一次画多条曲线,只需传入列表,并配上样式与图例:

Plot[{Sin[x], Cos[x]}, {x, 0, 2 Pi},
  PlotStyle -> {Red, Blue},
  PlotLegends -> {"sin", "cos"},
  GridLines -> Automatic]

Plot 的常用选项(完整清单见 tests/cli/plotting/Plot.md):

选项 作用
PlotRange 坐标范围,All 显示全部采样点,Automatic 自动裁剪极端值
PlotStyle 线型/颜色,如 Red、Dashed、Thickness[0.01]
AxesLabel 坐标轴标签 {xLabel, yLabel}
PlotLabel 图表标题
PlotLegends 图例
Filling 曲线间/曲线与坐标轴之间的填充,如 {1 -> {2}}
PlotPoints / MaxRecursion 自适应采样密度

3️⃣ 技巧二:用数据图呈现实验与统计结果

有了数据序列,就切换到列表类图表(详见 tests/cli/plotting.md):

(* 散点/折线:Joined -> True 连成折线 *)
ListPlot[Table[{x, Sin[x] + 0.1 RandomReal[]}, {x, 0, 6 Pi, 0.3}], Joined -> True]

(* 直方图:二项宽度 + 概率密度归一化 *)
Histogram[RandomVariate[NormalDistribution[], 200], "PDF"]

(* 条形图:带类别标签 *)
BarChart[{3, 1, 4, 1, 5, 9}, ChartLabels -> {"a", "b", "c", "d", "e", "f"}]

几个实用细节:

  • ListPlot 支持 Filling -> {1 -> {2}} 在两组数据间画茎,PlotMarkers 可换成任意字符标记
  • BarChart 用 BarOrigin -> Left 变横向条形图,ChartStyle -> "Pastel" 等 12 种命名配色方案直接套用,详见 tests/cli/plotting/BarChart.md
  • Histogram 支持 "Count"、"PDF"、"CDF" 等高度规格,多组数据可叠加绘制,见 tests/cli/plotting/Histogram.md

4️⃣ 技巧三:Plot3D 升维 + PlotGrid 排版

表面图只需两个范围参数:

Plot3D[Sin[Sqrt[x^2 + y^2]], {x, -3, 3}, {y, -3, 3},
  ColorFunction -> "Rainbow"]

Plot3D 支持 ViewPoint(视角)、ColorFunction -> "TemperatureMap"、Lighting、Mesh 等选项,完整列表见 tests/cli/plotting/Plot3D.md。

一张图讲不清?用 PlotGrid 把多张图排进共享网格,或更自由的 GraphicsGrid(GraphicsRow / GraphicsColumn 同理):

PlotGrid[{{Plot[Sin[x], {x, 0, 2 Pi}],
           Plot[Cos[x], {x, 0, 2 Pi}]},
          {Plot[Sin[2 x], {x, 0, 2 Pi}],
           Plot[Sin[3 x], {x, 0, 2 Pi}]}]]

5️⃣ 技巧四:出版级美化的 5 个开关

让图表从"草稿"变"成品",主要靠这几个选项组合:

Plot[Exp[-x/8] Sin[x], {x, 0, 8 Pi},
  PlotTheme -> "Scientific",            (* ① 科研风格主题 *)
  Ticks -> {Range[0, 8 Pi, Pi], Automatic}, (* ② 刻度显示为 π 的倍数 *)
  Filling -> Axis,                      (* ③ 曲线下填充 *)
  Frame -> True,
  FrameLabel -> {"t", "y(t)"}],         (* ④ 边框 + 轴标签 *)
(* ⑤ 输出分辨率:ImageSize -> 800 *)

要点说明:

  1. PlotTheme:"Scientific"、"Business" 等命名主题一键切换整体风格
  2. Ticks:刻度写成表达式时,Woxi 会按符号形式回显——x 轴按 π 的倍数刻度会直接读出 0, π/2, π, …,而不是 1.5708 这种小数
  3. Filling:Axis / Bottom / Top / 曲线间规则,配合 FillingStyle 调配色
  4. Frame + FrameLabel:出版排版常用边框代替坐标轴
  5. ImageSize:控制输出像素尺寸,{w, h} 可分别指定

6️⃣ 技巧五:一键导出 SVG 矢量图

Woxi 的绘图输出本身是矢量对象,导出 SVG 无需任何截图或第三方工具:

(* 导出到文件 *)
Export["sine.svg", Plot[Sin[x], {x, 0, 2 Pi}], "SVG"]

(* 或拿到 SVG 字符串自行处理 *)
ExportString[Plot[x, {x, 0, 1}], "SVG"]

命令行一行出图:

woxi eval 'Export["parabola.svg", Plot[x^2, {x, -2, 2}, PlotTheme -> "Scientific"], "SVG"]'

SVG 是矢量格式,无限放大不模糊,还能在编辑器里直接改样式——这正是"出版级"的关键。官方数据分析示例就演示了完整流水线:读 CSV → 分组统计 → 三张 BarChart → GraphicsGrid 拼版 → 导出 SVG,全程见 examples/data-analysis/data-analysis.wls。格式选项细节见 tests/cli/file_system/Export.md 与 tests/cli/file_system/ExportString.md,SVG 渲染实现的单元测试在 tests/miscellaneous_tests/svg_rendering.rs。

Woxi Studio 笔记本编辑器中的 Woxi 数学绘图工作区

7️⃣ 在 Jupyter 中实时预览图表

在 Jupyter 笔记本里,每个 Plot 表达式执行后立即以 SVG 渲染在单元格下方,边改参数边看图:

Woxi 在 Jupyter Notebook 中输出数学绘图 SVG 图表

Jupyter 内核的安装与 woxi run notebook.nb 直接运行 .nb 文件的用法,见 readme.md 的 Jupyter Notebook 章节。

📚 延伸资源

按"画曲线 → 摆数据 → 升维排版 → 美化 → 导出"这五步走,Woxi 就能让你在几分钟内产出论文质量的数学图表 📈

登录后查看全文
Woxi