# Boxplot Chart Generator

Paste values or grouped CSV data and render a box-and-whisker SVG with quartiles, whiskers, mean markers, notches, outliers, and summary stats.

## Run it

- **CLI:** `gizza tool boxplot-chart "group,value
A,1
A,2
A,3
A,4
B,5
B,6
B,7
B,20"`
- **Web:** https://gizza.ai/tools/boxplot-chart/
- **Agents:** machine-readable descriptor (parameters JSON Schema) at https://gizza.ai/tools/boxplot-chart/tool.json

## Inputs

- `data` — Data _(field)_
- `layout` — Input layout _(field)_
- `group_column` — Group column (long layout) _(field)_
- `value_column` — Value column (long layout) _(field)_
- `quartile_method` — Quartile method _(field)_
- `whiskers` — Whisker rule _(field)_
- `iqr_multiplier` — IQR multiplier _(field)_
- `percentile` — Lower percentile (for percentile whiskers) _(field)_
- `points` — Point markers _(field)_
- `show_mean` — Show mean marker _(field)_
- `notched` — Notched boxes _(field)_
- `orientation` — Orientation _(field)_
- `grid` — Show grid lines _(field)_
- `title` — Chart title _(field)_
- `value_label` — Value-axis label _(field)_
- `group_label` — Group-axis label _(field)_
- `width` — SVG width _(field)_
- `height` — SVG height _(field)_
- `color` — Box colour _(field)_
- `theme` — Theme _(field)_
- `output` — Output _(field)_

## Output

- Boxplot output (text)

## Query parameters

Open the tool pre-filled and auto-run via URL:

- `data` — Data
- `layout` — Input layout
- `group_column` — Group column (long layout)
- `value_column` — Value column (long layout)
- `quartile_method` — Quartile method
- `whiskers` — Whisker rule
- `iqr_multiplier` — IQR multiplier
- `percentile` — Lower percentile (for percentile whiskers)
- `points` — Point markers
- `show_mean` — Show mean marker
- `notched` — Notched boxes
- `orientation` — Orientation
- `grid` — Show grid lines
- `title` — Chart title
- `value_label` — Value-axis label
- `group_label` — Group-axis label
- `width` — SVG width
- `height` — SVG height
- `color` — Box colour
- `theme` — Theme
- `output` — Output

Example: `https://gizza.ai/tools/boxplot-chart/?data=group%2Cvalue%0AA%2C1%0AA%2C2%0AA%2C3%0AA%2C4%0AB%2C5%0AB%2C6%0AB%2C7%0AB%2C20&layout=auto&group_column=group&value_column=value&quartile_method=linear&whiskers=tukey&iqr_multiplier=1.5&percentile=5&points=outliers&show_mean=true&notched=true&orientation=vertical&grid=true&title=Latency%20by%20region&value_label=Latency%20%28ms%29&group_label=Region&width=800&height=480&color=%232563eb&theme=light&output=svg`

---

## About this tool

Boxplot Chart Generator renders box-and-whisker plots from pasted numeric data. Use it for quick distribution checks: compare latency by region, scores by class, order values by category, or spot outliers before you build a dashboard.

The tool accepts three common data shapes:

- A single list of values, one per line or separated by commas.
- A tidy table such as `group,value`, where one column names the group and one column holds the number.
- A wide table, where each numeric column becomes its own box.

By default it uses linear quartiles, Tukey whiskers at `1.5 × IQR`, outlier markers, a mean marker, and a light SVG chart. Switch `output` to `summary` for a text table or `json` for scriptable stats.

### Worked example

Paste this data:

```csv
group,value
A,1
A,2
A,3
A,4
B,5
B,6
B,7
B,20
```

Keep `layout=auto`, `whiskers=tukey`, and `points=outliers`. Group B's value `20` sits beyond the Tukey fence, so it is drawn as an outlier point while the whisker stops at the highest non-outlier value.

### Limits and edge cases

- Input is capped at 100,000 numeric values and 60 groups to keep browser runs responsive.
- Empty cells in wide tables are ignored; non-numeric cells in value columns produce a line-numbered error.
- `percentile` whiskers use the lower percentile and `100 - percentile` for the upper whisker.
- The SVG is deterministic and self-contained; no fonts, images, or external plotting libraries are loaded.

## FAQ

<details>
<summary>Which quartile method should I choose?</summary>

Use `linear` when you want percentile-style interpolation, which is common in charting tools and spreadsheets. Use `inclusive` or `exclusive` when you need to match a specific statistics package or classroom convention. The `summary` and `json` outputs make it easy to compare the resulting Q1, median, and Q3 values.

</details>

<details>
<summary>Why does an outlier not move the whisker all the way to the maximum?</summary>

With `whiskers=tukey`, whiskers stop at the most extreme value still inside `Q1 - k×IQR` and `Q3 + k×IQR`. Values outside those fences are outliers and are drawn separately. Choose `whiskers=minmax` if you want whiskers to span the full data range.

</details>

<details>
<summary>How do I plot grouped CSV data?</summary>

Paste a table with one group column and one numeric value column, such as `region,latency_ms`. `layout=auto` usually detects this; if your headers are unusual, set `layout=long`, `group_column=region`, and `value_column=latency_ms` explicitly.

</details>

<details>
<summary>Can I use the output in documentation or a report?</summary>

Yes. The default output is plain SVG markup, so you can save it as an `.svg` file, paste it into HTML/Markdown workflows that allow SVG, or switch to `summary`/`json` when you need the computed statistics instead of the chart image.

</details>

## Related tools

- [Histogram Chart Maker](https://gizza.ai/tools/histogram-chart/): Paste a list of numbers and render an SVG histogram. Auto bin rules or an explicit bin count/width, count, percent, density or cumulative bars, mean and median markers.
- [Analyze a Chat or IRC Log](https://gizza.ai/tools/chat-log-analyzer/): Paste an IRC or chat log and get stats in your browser: who talked most, activity by hour and weekday, top words, links shared, and joins/parts/quits.
- [Correlated sample generator](https://gizza.ai/tools/correlated-sample-generator/): Generate multivariate-normal sample data from a covariance or correlation matrix, with seeded CSV, TSV, JSON or stats output.
- [Descriptive statistics](https://gizza.ai/tools/descriptive-stats/): Compute mean, median, mode, variance, standard deviation, quartiles, min and max for a list of numbers, in your browser. Free, private, no upload.
- [Z-Score Normalize](https://gizza.ai/tools/z-score-normalize/): Standardize a list of numbers with z-score, min-max, max-abs, or robust median/IQR scaling. Population or sample standard deviation, private and browser-local.
