Skip to content

v1.0.0-publish

Choose a tag to compare

@xuesoso xuesoso released this 07 Jun 06:52
· 17 commits to main since this release

plotty v1.0.0

Inline matplotlib plots in your terminal — rendered as sixel in a dedicated
tmux pane, including over SSH. No browser, no X11, no Jupyter server.

Highlights

  • Terminal-native matplotlib backend. import plotty; plotty.enable() and
    your figures show up in a tmux pane next to your REPL — the notebook experience
    for a tmux + ipython (+ nvim) workflow.
  • Works over SSH, identically to local. Only rendered sixel bytes cross the
    wire; the control plane (signals, pidfile, image hand-off) stays host-local.
  • Nested tmux support (local tmux → ssh → remote tmux) with a one-line,
    one-time tmux config.
  • Built-in, dependency-free sixel encoder (pure stdlib + numpy) — works out
    of the box with zero external tools. Auto-detects chafa / img2sixel /
    ImageMagick for higher-quality output when available. Sixel-only, by design,
    for SSH robustness.
  • Two display modes: a viewer process that auto-redraws on pane
    resize/zoom (default in tmux), and a lightweight inline mode that pipes sixel
    straight to the pane's tty or your stdout (works without tmux too).
  • Auto-display in IPython after every cell — no plt.show() needed.
  • Tunable display — size (width in cells) and dpi (source resolution),
    via args or PLOTTY_* env vars.
  • Startup health check that flags missing tmux sixel support and tells you
    exactly what to fix.
  • Tiny footprint: Python ≥ 3.7, only matplotlib + numpy required.

Quick start

import plotty
plotty.enable()

import matplotlib.pyplot as plt
plt.plot([1, 4, 9, 16])     # appears in the plot pane

Requirements: Python ≥ 3.7 · tmux ≥ 3.4 (built with sixel) · a sixel-capable
terminal (WezTerm, iTerm2, xterm, xfce-term, …).