Metadata-Version: 2.4
Name: breeplot
Version: 0.1.0
Summary: A clean, fluent plotting package for mathematics research figures.
Author-email: Breanne Tippings <breemail41@gmail.com>
License-Expression: MIT
Project-URL: Homepage, https://gitlab.com/breemail41/BPlot
Project-URL: Repository, https://gitlab.com/breemail41/BPlot
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Intended Audience :: Science/Research
Classifier: Topic :: Scientific/Engineering :: Visualization
Classifier: Operating System :: OS Independent
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: matplotlib>=3.7
Requires-Dist: numpy>=1.24
Provides-Extra: dev
Requires-Dist: pytest>=7.0; extra == "dev"
Provides-Extra: notebook
Requires-Dist: ipympl>=0.9; extra == "notebook"
Dynamic: license-file

# breeplot

A clean, fluent plotting package for mathematics research figures, built on
matplotlib. `Figure` chains draw and decoration calls into a single readable
sentence, and handles the figure-sizing, 2D/3D layout, and color-cycling
bookkeeping you'd otherwise rewrite per figure.

```python
import breeplot as bp

fig = bp.figure(width="textwidth", panels=(1, 2))
fig.panel(0, 0).orbit(x, y, color_by=t).xlabel("x").ylabel("y")
fig.panel(0, 1).curve(x, fit_y, label="fit").legend()
fig.save("figures/orbit")
```

## Install

```bash
pip install breeplot
```

For live, interactive figures inside Jupyter (pan/zoom in 2D, drag-to-rotate
in 3D):

```bash
pip install "breeplot[notebook]"
```

## Features

- **Fluent `Figure` API** — `scatter`, `orbit`, `curve`, `fit`, `separatrix`,
  `family`, `implicit`, `histogram`, `mark`, `plane`, plus decoration
  (`xlabel`, `ylabel`, `zlabel`, `title`, `legend`, `colorbar`, `xlim`/`ylim`/
  `zlim`, `logx`/`logy`, `grid`) — every call returns the `Figure` so calls
  chain.
- **Multi-panel grids** with mixed 2D/3D axes, sized in physical units
  (`width="textwidth"` and friends) for drop-in use in a paper.
- **`Figure.zoom()`** replays the layers already drawn onto a second panel at
  different axis limits — the "full view + zoomed inset" idiom common in
  research figures, without repeating your plotting calls.
- **A house color system** (`breeplot.colors`) with categorical, sequential,
  and diverging palettes.
- **Live notebook viewing** (`breeplot.notebook.enable()`) — figures stay
  interactive (zoom, pan, 3D rotate) inside Jupyter via `ipympl`.
- **`Figure.save()`** writes multiple formats (PDF + PNG by default) in one
  call.

## Development

```bash
pip install -e ".[dev]"
pytest
```

## License

MIT
