Sharbel Marshi249 downloadsCreate math graphs from a GUI. Insert plots via forms without writing plot code.
Insert mathematical graphs into Obsidian notes through a form. You type normal math (sin^2(x), x^2+y^2), not TikZ, PGFPlots, or Octave syntax. The plugin stores a small JSON block in your note and renders it as SVG in Reading View.
These SVGs were exported from Math Plotter:
| 2D function | 2D function + labeled point | Oscillating 2D plot |
| 3D surface (heat colormap) | Heat-equation style surface | PDE solution surface |
| Another 3D PDE plot | Wireframe 3D surface |
Graphs render with a transparent background so they sit cleanly on your note.
| Type | What you enter |
|---|---|
| 2D function | y = f(x) — e.g. sin^2(x) |
| 3D surface | z = f(x, y) — e.g. x^2+y^2 |
| ODE | An explicit solution you already have — e.g. exp(-2*x) for y' = -2y |
| PDE | An explicit solution surface — e.g. exp(-2*t)*sin(x)*sin(y) with parameter t |
| Parametric 2D / 3D | x(t), y(t), optional z(t) — full modal only |
| Data | (x, y) pairs |
| Points | Labeled points on top of any plot (Points tab in the modal) |
Math Plotter does not symbolically solve ODEs or PDEs. for advanced ODEs or PDEs solving enable and download octave cli through the settings tab.
Ribbon - click the line-chart icon (Insert Function Plot).
Command palette - run Insert Function Plot.
Empty code block - type a fenced block with nothing inside:
An inline builder appears. Use More Options to open the full modal with tabs for Equation, Ranges, Style, Size, and Points.
Once a graph is drawn, hover the toolbar:
Edit · Refresh · − · 100% · + · Export · Export PNG
Math Plotter does not read or write the system clipboard.
Write calculator-style math in function fields:
x^2 + y^2
sin^2(x)+cos^2(y)
exp(-2*t)*sin(x)*sin(y)
sqrt(x^2+y^2)
ln(x) (log(x) works too)
pi / π
2sin(x)
The plugin saves your expression as-is in the function field. Compilation to PGFPlots or Octave happens at render time only.
2D / ODE — theme-aware line color by default (auto), optional grid, custom line width.
3D / PDE 3D — colored heat mesh by default; switch to wireframe or solid in the Style tab.
LaTeX size — preset or custom width/height; affects export quality and axis labels.
Display scale — 0.5×–2.5× zoom in Obsidian only; adjustable from the toolbar without recompiling.
After installing: enable Settings → Community plugins → Math Plotter, then reload Obsidian.
Settings → Math Plotter
| Setting | Notes |
|---|---|
| Output format | SVG in Reading View; PNG available on export |
| LuaLaTeX fallback | Off by default; retries failed TikZJax renders if TeX is installed |
| Octave engine | Off by default; external numerical sampler for advanced use |
| Prefer Octave for 3D / ODE·PDE numeric | Only relevant when Octave is enabled |
| Debug mode | Shows generated TikZ in error details |
Per-graph size is set in the builder (Size tab) or the inline builder preset — not in plugin settings.
Normal graphs use a built-in JavaScript sampler and draw SVG directly. That is the default path — fast, no WASM compile on every edit.
TikZJax (bundled WebAssembly) compiles generated PGFPlots when needed — for example when fast preview is unavailable for a graph type, an error panel offers High quality render.
Octave (optional) samples numerically via octave-cli and feeds CSV data to PGFPlots. Not required for everyday plotting.
LuaLaTeX (optional) is a fallback when TikZJax cannot compile a particular plot.
Optional: GNU Octave CLI (octave-cli), LuaLaTeX + Poppler for fallbacks.
Graph too small — open Edit → Size, pick Large or Full width, or use the toolbar zoom.
Surface clipped — widen the z range. For z = x^2 on a wide x range, a narrow z range will cut most of the surface off.
TikZJax failed — enable LuaLaTeX fallback in Advanced settings if you have MacTeX or TeX Live.
Octave issues — set the path to octave-cli (e.g. /opt/homebrew/bin/octave-cli on Apple Silicon), not the GUI app. Use Test Octave in settings.
Invalid block — use Edit Graph or Reset Block on the error panel.
Release process: RELEASING.md
MIT — Copyright © Sharbel Marshi