Metadata-Version: 2.5
Name: figscribe
Version: 0.0.2
Summary: A lean desktop GUI for scientific Matplotlib plots that exports clean, standalone Python code instead of a proprietary project file.
Project-URL: Homepage, https://github.com/f4ren/figscribe
Project-URL: Source, https://github.com/f4ren/figscribe
Project-URL: Issues, https://github.com/f4ren/figscribe/issues
Author-email: f4ren <faren@researchpoint.net>
License-Expression: MIT
License-File: LICENSE
Keywords: code-generation,gui,matplotlib,plotting,science
Classifier: Development Status :: 1 - Planning
Classifier: Environment :: X11 Applications :: Qt
Classifier: Intended Audience :: Science/Research
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Scientific/Engineering :: Visualization
Requires-Python: >=3.11
Description-Content-Type: text/markdown

# figscribe

A lean desktop GUI for scientific plots: build and fine-tune figures
interactively, and get **clean, standalone Python code** (Matplotlib) as the
result instead of a proprietary project file.

Intended for scientists and engineers who find Origin unwieldy but don't want to
hand-write every detail of a Matplotlib figure just to fine-tune it.

## Status

**Very early — planning stage.** Nothing usable has been implemented yet; the
PyPI entry is a placeholder release that reserves the name.

The full project plan lives in [`plan/`](plan/).

## Design principle

The declarative plot model is the single source of truth:

```
Plot model (typed, JSON-serializable)
   ├──> Renderer:       model -> Matplotlib figure (GUI preview AND export)
   ├──> Code generator:  model -> standalone Python script
   └──> Persistence:    model <-> JSON project file
```

The GUI only ever reads and mutates the model, through commands with undo/redo —
it never manipulates Matplotlib objects directly. Preview and export share the
same renderer, so what you see is what you get. The generated code reproduces the
same figure and runs without figscribe installed.

## Scope

Planned for the MVP: data import (CSV, HDF5, NPY/NPZ), line/scatter/errorbar
plots, histograms, 2D images and color meshes, curve fitting via
`scipy.optimize.curve_fit`, multi-panel layouts with shared axes, LaTeX labels,
undo/redo, export to PDF/SVG/PNG at exact millimeter sizes, and Matplotlib style
templates for journal-column widths.

Deliberately out of scope: spreadsheet-style data editing, a statistics suite, a
custom scripting language, and reading generated or third-party Python code back
in.

## Stack

Python >= 3.11, PySide6, Matplotlib, NumPy, SciPy, h5py.

## License

MIT, see [LICENSE](LICENSE).
