charted icon charted

Charts worth publishing.

Zero-dependency SVG charting for Python. No numpy, no pandas, no matplotlib. Pure stdlib. 15 chart types.

pip install charted
15 chart types 0 dependencies SVG · PNG · HTML MCP server
Monthly Active Users by Plan

Three lines of code.

The entire API is a constructor and a method. Pass data. Get a chart.

from charted import BarChart

chart = BarChart(
    title="Revenue by Region ($M)",
    data=[4.2, 7.8, 6.1, 9.3, 5.5, 8.7],
    labels=["APAC", "North Am", "Europe",
            "LatAm", "MEA", "ANZ"],
)
chart.save("chart.svg")
Bar chart output
from charted import LineChart

chart = LineChart(
    title="API Latency Percentiles (ms)",
    data=[p50, p95, p99],
    labels=months,
    series_names=["p50", "p95", "p99"],
)
chart.save("latency.svg")
Line chart output
from charted import ComboChart

chart = ComboChart(
    title="Revenue vs Net Margin",
    series=[
        {"data": revenue, "type": "column"},
        {"data": margin,  "type": "line",
         "axis": "secondary"},
    ],
    labels=quarters,
)
chart.save("combo.svg")
Combo chart output

Built for serious work.

Zero runtime dependencies

Pure Python stdlib. No numpy, pandas, or matplotlib. pip install and you're done.

Theme system

Built-in light, dark, high-contrast presets. Full custom palette and font overrides. Per-series styling.

Multi-series layouts

Stacked, side-by-side, and grouped. Negative values handled with proper zero baselines.

MCP server

charted-mcp renders charts straight into AI chats. Listed on awesome-mcp-servers. Run with uvx.

Jupyter inline

Charts render in notebook cells automatically. No extra configuration needed.

CLI included

Generate charts from CSV or JSON without writing Python. Batch-process entire directories.

SVG · PNG · HTML · data-URL

Save to any format. PNG via optional cairosvg. Embed as data-URLs in markdown or HTML.

CSV/JSON loading

Built-in parsers, no pandas required. Wide and long CSV both supported via --transpose.