# Chart Builder

> Use this skill whenever the user asks to visualize, chart, plot, or graph data (bar, line, scatter, histogram, pie) from a CSV, table, or DataFrame. It gives the agent prebuilt, parameterized matplotlib functions so charts are produced faster and more reliably — with consistent styling and sane defaults — instead of hand-writing matplotlib each time.

- Skill: `microsoft/chart-builder` (Agent Skill, multi-file: 6 files)
- Install (CLI): `npx skillmds@latest add microsoft/chart-builder`
- Raw SKILL.md: https://api.skillmd.com/api/skills/microsoft/chart-builder/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Data & Analytics
- Author: Microsoft (https://skillmd.com/u/microsoft)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/microsoft/chart-builder

---


Generate charts from tabular data via the bundled `scripts/charts.py` toolkit.
Each function takes a DataFrame or a file path plus the columns to plot, and
saves a PNG (returning the path). It handles theming, figure sizing, label
rotation, NaN dropping, legend placement, and saving.

## Instructions
1. Provide the data source: a pandas DataFrame, or a path to a `.csv` / `.tsv` /
   `.json` file.
2. Call the function for the chart you need, passing the column names:
   - `bar(data, x, y)` — one value per category (`horizontal=True` for barh)
   - `grouped_bar(data, x, y, group)` — value per category split by `group`
     (`stacked=True` to stack)
   - `line(data, x, y, group=None)` — value over an ordered axis, one line per
     `group`
   - `scatter(data, x, y, group=None, size=None)` — two numeric columns
   - `histogram(data, y, bins=20, group=None)` — distribution of one column
   - `pie(data, x, y, donut=False)` — share of `y` per category `x`
3. Optional keyword args on every chart: `title`, `xlabel`, `ylabel` (derived
   from column names if omitted), `out` (default `"chart.png"`; pass `None` to
   skip saving), `dpi` (default `150`), `figsize`, `palette`.
4. The function returns the saved image path. See `references/cheatsheet.md` for
   full signatures and a chart-selection table.

## Usage
Import:
```python
from charts import bar, line, pie
bar("sales.csv", x="region", y="revenue", title="Revenue by region",
    out="revenue.png")
```

CLI:
```bash
python scripts/charts.py grouped_bar sales.csv \
    --x region --y revenue --group quarter --stacked --out by_quarter.png
```

## Bundled files
- `scripts/charts.py` — the toolkit: `load_data`, `apply_theme`, `save_fig`, and
  six chart functions (`bar`, `grouped_bar`, `line`, `scatter`, `histogram`,
  `pie`), plus a CLI. Depends on `matplotlib` and `pandas`; runs headless.
- `references/cheatsheet.md` — chart-selection table, full signatures, and
  copy-paste CLI examples.
- `assets/sample_sales.csv` — a small demo dataset that exercises every chart.

## Defaults
- Colorblind-friendly palette and a shared theme across charts.
- Figure size, x-label rotation, and legend placement adapt to the data.
- Rows with missing values in the plotted columns are dropped before drawing.
- Output is a saved PNG at 150 DPI by default (override `out` and `dpi`).

