GUI tool for matplotlib styling in Jupyter notebooks
Project description
mplstudio
An interactive GUI for styling matplotlib figures directly in Jupyter.
Adjust colors, fonts, axes, legends, and more in real time without touching your plot code.
Installation
pip install mplstudio
Requires Python 3.9+, Jupyter Notebook or JupyterLab, and matplotlib ≥ 3.5.
Quick Start
import matplotlib.pyplot as plt
import mplstudio
fig, ax = plt.subplots()
ax.plot([1, 2, 3], [1, 4, 9], label="y = x²")
ax.plot([1, 2, 3], [1, 2, 3], label="y = x")
ax.legend()
mplstudio.studio(fig)
For detailed usage examples, see examples/demo.ipynb.
API Reference
mplstudio.studio(fig, *, show=None, dark=False)
Display the styling control panel for a matplotlib figure.
| Parameter | Type | Default | Description |
|---|---|---|---|
fig |
Figure | None |
plt.gcf() |
Target figure. Uses the current figure if omitted. |
show |
list[str] | None |
None |
Section names to display. None shows all sections. |
dark |
bool |
False |
Use Catppuccin Mocha dark theme. |
# Show only specific sections
mplstudio.studio(fig, show=["colors", "axes", "legend"])
# Dark theme
mplstudio.studio(fig, dark=True)
mplstudio.available_sections()
Return a sorted list of all valid section names.
mplstudio.available_sections()
# ['alpha', 'axes', 'colors', 'figure_size', 'grid_spines',
# 'legend', 'palette_suggestions', 'save', 'typography']
Available Sections
| Section | Controls |
|---|---|
figure_size |
Width and height sliders |
typography |
Font size for all elements or individually (title, labels, ticks, legend) |
colors |
Palette picker (with color count), manual per-series color pickers, smart CIELAB palette, colormap selector, background color |
alpha |
Global opacity slider + per-series opacity |
axes |
Title, x/y axis labels, x/y limits — supports multi-axis figures |
legend |
Legend title, collapsible series label editor, location dropdown, bbox position |
grid_spines |
Grid toggle, spine style (Box / 2-Side / None) |
palette_suggestions |
Colorblind-safe palette recommendations filtered by use case and background |
save |
Save figure with custom filename, path, DPI, and format (png, jpg, pdf, svg, eps) |
Palette Utilities
mplstudio ships a curated palette library and color science tools you can use independently of the GUI: get_palette, smart_palette, recommend, palette_names, and delta_e. See examples/demo.ipynb for usage examples.
Available Palettes
Palettes for categorical, and continuous variables (sequential and diverging color maps).
Following table shows palettes for categorical values. For continuous variables, mplstudio uses matplotlib's built-in colormaps. See the matplotlib colormap reference for the full list.
| Palette | Colors | Tags |
|---|---|---|
| Okabe-Ito | 8 | colorblind-safe |
| Paul Tol Bright | 7 | colorblind-safe |
| Paul Tol Vibrant | 7 | colorblind-safe |
| Paul Tol Muted | 10 | colorblind-safe |
| IBM Colorblind Safe | 6 | colorblind-safe |
| ColorBrewer Set1 | 9 | categorical |
| ColorBrewer Set2 | 8 | categorical |
| ColorBrewer Dark2 | 8 | categorical |
| ColorBrewer Paired | 12 | categorical |
| Tableau 10 | 10 | categorical |
| Matplotlib tab10 | 10 | categorical |
| Nord | 6 | dark background |
| Catppuccin Latte | 6 | light background |
| Dracula | 6 | dark background |
| Tokyo Night | 6 | dark background |
| Pastel | 6 | light background |
| High Contrast | 5 | light background |
Requirements
- Python ≥ 3.9
- matplotlib ≥ 3.5
- ipywidgets ≥ 8.0
- ipykernel ≥ 6.0
- Jupyter Notebook or JupyterLab
License
MIT © 2026 Seo-Yoon Moon
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mplstudio-0.1.0.tar.gz.
File metadata
- Download URL: mplstudio-0.1.0.tar.gz
- Upload date:
- Size: 726.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ea1eb588ce4ce9be5de1c8a587aa78a936ea224e79c91f185915f563ffa053dc
|
|
| MD5 |
8f43f7ed30f576a591ba74527341eae9
|
|
| BLAKE2b-256 |
78f6e34d723008afe86d4528f4b59b6badaea17a62580543e8b720c24b8011ef
|
Provenance
The following attestation bundles were made for mplstudio-0.1.0.tar.gz:
Publisher:
publish.yml on symoon9/mplstudio
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mplstudio-0.1.0.tar.gz -
Subject digest:
ea1eb588ce4ce9be5de1c8a587aa78a936ea224e79c91f185915f563ffa053dc - Sigstore transparency entry: 1392524470
- Sigstore integration time:
-
Permalink:
symoon9/mplstudio@ae53c5446fc88057d21c2680cc153906683e491b -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/symoon9
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@ae53c5446fc88057d21c2680cc153906683e491b -
Trigger Event:
push
-
Statement type:
File details
Details for the file mplstudio-0.1.0-py3-none-any.whl.
File metadata
- Download URL: mplstudio-0.1.0-py3-none-any.whl
- Upload date:
- Size: 33.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f247b7ce0ae0e4b652505167a63dd4298ace8f6b61d454444b324cb46a1ac8f9
|
|
| MD5 |
d8d448f3a77d016eb9ea60db6a2b7187
|
|
| BLAKE2b-256 |
41d018a1ceb3ff994f500f4064589e8ad837519f698fecf3b56ff78332bb8885
|
Provenance
The following attestation bundles were made for mplstudio-0.1.0-py3-none-any.whl:
Publisher:
publish.yml on symoon9/mplstudio
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mplstudio-0.1.0-py3-none-any.whl -
Subject digest:
f247b7ce0ae0e4b652505167a63dd4298ace8f6b61d454444b324cb46a1ac8f9 - Sigstore transparency entry: 1392524474
- Sigstore integration time:
-
Permalink:
symoon9/mplstudio@ae53c5446fc88057d21c2680cc153906683e491b -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/symoon9
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@ae53c5446fc88057d21c2680cc153906683e491b -
Trigger Event:
push
-
Statement type: