A SQL-like query language for creating plots. No Python boilerplate, no remembering matplotlib syntax — just describe what you want to plot.
The easiest way to use PlotQL is through the interactive TUI, which allows you to plot data without leaving your terminal:
# Setup (requires uv)
git clone https://github.com/your-username/plotql.git
cd plotql && ./ctl.sh setup
source .venv/bin/activate
# Launch the TUI
plotqlWrite queries like:
WITH source('docs/example.csv')
PLOT price AGAINST received_at AS 'line'
FORMAT color = 'peach'Press F5 to execute. See TUI documentation for keyboard shortcuts and features.
If you don't have uv, install it from astral.sh/uv.
PlotQL's core is a standalone library, independent of the TUI. Use it in scripts, Jupyter notebooks, or embed it in your own applications:
from plotql.core import parse, execute, render
query = parse("WITH 'data.csv' PLOT revenue AGAINST month AS 'bar'")
data = execute(query)
result = render(data)
result.save("chart.png") # Save to file
result.show() # Display in Jupyter
result.figure # Access matplotlib figure for customizationThis separation means you can use PlotQL's query language in whatever context makes sense for your workflow.
- Syntax & Python API — Full language reference, operators, aggregations, and Python usage
- Connectors — Data sources: files, folders, ClickHouse databases
- Engines — Rendering backends and customization
- TUI — Interactive terminal interface
See CONTRIBUTING.md for:
- Development setup
- Architecture overview (core/engines/connectors/UI separation)
- Theme system
- Tree-sitter grammar workflow
- Feature checklist
MIT
