plotstyle 1.2.3__tar.gz → 1.2.4__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {plotstyle-1.2.3 → plotstyle-1.2.4}/CHANGELOG.md +37 -21
- plotstyle-1.2.4/CITATION.cff +37 -0
- {plotstyle-1.2.3 → plotstyle-1.2.4}/PKG-INFO +307 -260
- plotstyle-1.2.4/README.md +700 -0
- {plotstyle-1.2.3 → plotstyle-1.2.4}/pyproject.toml +14 -17
- {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/_compat/mpl_style.py +1 -1
- {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/_utils/warnings.py +0 -10
- {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/_version.py +2 -2
- {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/cli/main.py +14 -1
- plotstyle-1.2.4/src/plotstyle/color/data/conservative_colorblind.json +5 -0
- {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/color/data/tol_high_contrast.json +1 -1
- plotstyle-1.2.4/src/plotstyle/color/data/tol_light.json +5 -0
- plotstyle-1.2.4/src/plotstyle/color/data/tol_rainbow_1.json +7 -0
- plotstyle-1.2.4/src/plotstyle/color/data/tol_rainbow_10.json +16 -0
- plotstyle-1.2.4/src/plotstyle/color/data/tol_rainbow_11.json +17 -0
- plotstyle-1.2.4/src/plotstyle/color/data/tol_rainbow_12.json +18 -0
- plotstyle-1.2.4/src/plotstyle/color/data/tol_rainbow_13.json +19 -0
- plotstyle-1.2.4/src/plotstyle/color/data/tol_rainbow_14.json +20 -0
- plotstyle-1.2.4/src/plotstyle/color/data/tol_rainbow_15.json +21 -0
- plotstyle-1.2.4/src/plotstyle/color/data/tol_rainbow_16.json +22 -0
- plotstyle-1.2.4/src/plotstyle/color/data/tol_rainbow_17.json +23 -0
- plotstyle-1.2.4/src/plotstyle/color/data/tol_rainbow_18.json +24 -0
- plotstyle-1.2.4/src/plotstyle/color/data/tol_rainbow_19.json +25 -0
- plotstyle-1.2.4/src/plotstyle/color/data/tol_rainbow_2.json +8 -0
- plotstyle-1.2.4/src/plotstyle/color/data/tol_rainbow_20.json +26 -0
- plotstyle-1.2.4/src/plotstyle/color/data/tol_rainbow_21.json +27 -0
- plotstyle-1.2.4/src/plotstyle/color/data/tol_rainbow_22.json +28 -0
- plotstyle-1.2.4/src/plotstyle/color/data/tol_rainbow_23.json +29 -0
- plotstyle-1.2.4/src/plotstyle/color/data/tol_rainbow_3.json +9 -0
- {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/color/data/tol_rainbow_4.json +6 -1
- plotstyle-1.2.4/src/plotstyle/color/data/tol_rainbow_5.json +11 -0
- plotstyle-1.2.4/src/plotstyle/color/data/tol_rainbow_6.json +12 -0
- plotstyle-1.2.4/src/plotstyle/color/data/tol_rainbow_7.json +13 -0
- plotstyle-1.2.4/src/plotstyle/color/data/tol_rainbow_8.json +14 -0
- plotstyle-1.2.4/src/plotstyle/color/data/tol_rainbow_9.json +15 -0
- {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/color/palettes.py +2 -0
- {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/engine/fonts.py +13 -1
- {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/overlays/cjk-japanese.toml +2 -2
- {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/overlays/cjk-korean.toml +2 -2
- {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/overlays/cjk-simplified.toml +2 -2
- {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/overlays/cjk-traditional.toml +2 -2
- plotstyle-1.2.4/src/plotstyle/overlays/conservative-colorblind.toml +7 -0
- plotstyle-1.2.4/src/plotstyle/overlays/si-units.toml +13 -0
- {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/overlays/tol-high-contrast.toml +1 -1
- {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/overlays/tol-light.toml +1 -1
- plotstyle-1.2.4/src/plotstyle/overlays/tol-rainbow-1.toml +7 -0
- {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/overlays/tol-rainbow-10.toml +1 -1
- plotstyle-1.2.4/src/plotstyle/overlays/tol-rainbow-11.toml +7 -0
- plotstyle-1.2.4/src/plotstyle/overlays/tol-rainbow-13.toml +7 -0
- plotstyle-1.2.4/src/plotstyle/overlays/tol-rainbow-14.toml +7 -0
- plotstyle-1.2.4/src/plotstyle/overlays/tol-rainbow-15.toml +7 -0
- plotstyle-1.2.4/src/plotstyle/overlays/tol-rainbow-16.toml +7 -0
- plotstyle-1.2.4/src/plotstyle/overlays/tol-rainbow-17.toml +7 -0
- plotstyle-1.2.4/src/plotstyle/overlays/tol-rainbow-18.toml +7 -0
- plotstyle-1.2.4/src/plotstyle/overlays/tol-rainbow-19.toml +7 -0
- plotstyle-1.2.4/src/plotstyle/overlays/tol-rainbow-2.toml +7 -0
- plotstyle-1.2.4/src/plotstyle/overlays/tol-rainbow-20.toml +7 -0
- plotstyle-1.2.4/src/plotstyle/overlays/tol-rainbow-21.toml +7 -0
- plotstyle-1.2.4/src/plotstyle/overlays/tol-rainbow-22.toml +7 -0
- plotstyle-1.2.4/src/plotstyle/overlays/tol-rainbow-23.toml +7 -0
- plotstyle-1.2.4/src/plotstyle/overlays/tol-rainbow-3.toml +7 -0
- plotstyle-1.2.4/src/plotstyle/overlays/tol-rainbow-5.toml +7 -0
- plotstyle-1.2.4/src/plotstyle/overlays/tol-rainbow-7.toml +7 -0
- plotstyle-1.2.4/src/plotstyle/overlays/tol-rainbow-9.toml +7 -0
- {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/specs/__init__.py +3 -26
- {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/specs/_templates.toml +3 -2
- plotstyle-1.2.4/src/plotstyle/specs/acm.toml +33 -0
- {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/specs/acs.toml +3 -4
- plotstyle-1.2.4/src/plotstyle/specs/cell.toml +32 -0
- {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/specs/elsevier.toml +1 -2
- {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/specs/ieee.toml +1 -2
- {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/specs/nature.toml +2 -3
- {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/specs/plos.toml +1 -2
- {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/specs/prl.toml +1 -2
- plotstyle-1.2.4/src/plotstyle/specs/science.toml +34 -0
- {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/specs/springer.toml +1 -2
- plotstyle-1.2.4/src/plotstyle/specs/usenix.toml +33 -0
- {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/specs/wiley.toml +2 -3
- {plotstyle-1.2.3 → plotstyle-1.2.4}/tests/test_core/test_style.py +0 -3
- plotstyle-1.2.3/README.md +0 -653
- plotstyle-1.2.3/src/plotstyle/color/data/tol_light.json +0 -5
- plotstyle-1.2.3/src/plotstyle/color/data/tol_rainbow_10.json +0 -5
- plotstyle-1.2.3/src/plotstyle/color/data/tol_rainbow_12.json +0 -5
- plotstyle-1.2.3/src/plotstyle/color/data/tol_rainbow_6.json +0 -5
- plotstyle-1.2.3/src/plotstyle/color/data/tol_rainbow_8.json +0 -5
- plotstyle-1.2.3/src/plotstyle/specs/cell.toml +0 -35
- plotstyle-1.2.3/src/plotstyle/specs/science.toml +0 -31
- {plotstyle-1.2.3 → plotstyle-1.2.4}/.gitignore +0 -0
- {plotstyle-1.2.3 → plotstyle-1.2.4}/LICENSE +0 -0
- {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/__init__.py +0 -0
- {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/_compat/__init__.py +0 -0
- {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/_utils/__init__.py +0 -0
- {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/_utils/io.py +0 -0
- {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/cli/__init__.py +0 -0
- {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/color/__init__.py +0 -0
- {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/color/_rendering.py +0 -0
- {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/color/accessibility.py +0 -0
- {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/color/data/okabe_ito.json +0 -0
- {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/color/data/safe_grayscale.json +0 -0
- {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/color/data/tol_bright.json +0 -0
- {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/color/data/tol_muted.json +0 -0
- {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/color/data/tol_vibrant.json +0 -0
- {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/color/grayscale.py +0 -0
- {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/core/__init__.py +0 -0
- {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/core/export.py +0 -0
- {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/core/figure.py +0 -0
- {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/core/migrate.py +0 -0
- {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/core/style.py +0 -0
- {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/engine/__init__.py +0 -0
- {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/engine/latex.py +0 -0
- {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/engine/rcparams.py +0 -0
- {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/integrations/__init__.py +0 -0
- {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/integrations/seaborn.py +0 -0
- {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/overlays/__init__.py +0 -0
- {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/overlays/bar.toml +0 -0
- {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/overlays/grid.toml +0 -0
- {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/overlays/high-vis.toml +0 -0
- {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/overlays/latex-sans.toml +0 -0
- {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/overlays/minimal.toml +0 -0
- {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/overlays/no-latex.toml +0 -0
- {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/overlays/notebook.toml +0 -0
- {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/overlays/okabe-ito.toml +0 -0
- {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/overlays/pgf.toml +0 -0
- {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/overlays/presentation.toml +0 -0
- {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/overlays/russian.toml +0 -0
- {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/overlays/safe-grayscale.toml +0 -0
- {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/overlays/scatter.toml +0 -0
- {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/overlays/schema.py +0 -0
- {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/overlays/tol-bright.toml +0 -0
- {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/overlays/tol-muted.toml +0 -0
- {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/overlays/tol-rainbow-12.toml +0 -0
- {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/overlays/tol-rainbow-4.toml +0 -0
- {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/overlays/tol-rainbow-6.toml +0 -0
- {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/overlays/tol-rainbow-8.toml +0 -0
- {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/overlays/tol-vibrant.toml +0 -0
- {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/overlays/turkish.toml +0 -0
- {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/preview/__init__.py +0 -0
- {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/preview/gallery.py +0 -0
- {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/preview/print_size.py +0 -0
- {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/py.typed +0 -0
- {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/specs/schema.py +0 -0
- {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/specs/units.py +0 -0
- {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/validation/__init__.py +0 -0
- {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/validation/checks/__init__.py +0 -0
- {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/validation/checks/_base.py +0 -0
- {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/validation/checks/colors.py +0 -0
- {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/validation/checks/dimensions.py +0 -0
- {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/validation/checks/export.py +0 -0
- {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/validation/checks/lines.py +0 -0
- {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/validation/checks/typography.py +0 -0
- {plotstyle-1.2.3 → plotstyle-1.2.4}/src/plotstyle/validation/report.py +0 -0
- {plotstyle-1.2.3 → plotstyle-1.2.4}/tests/conftest.py +0 -0
- {plotstyle-1.2.3 → plotstyle-1.2.4}/tests/test_cli/test_main.py +0 -0
- {plotstyle-1.2.3 → plotstyle-1.2.4}/tests/test_color/test_accessibility.py +0 -0
- {plotstyle-1.2.3 → plotstyle-1.2.4}/tests/test_color/test_grayscale.py +0 -0
- {plotstyle-1.2.3 → plotstyle-1.2.4}/tests/test_color/test_palettes.py +0 -0
- {plotstyle-1.2.3 → plotstyle-1.2.4}/tests/test_color/test_rendering.py +0 -0
- {plotstyle-1.2.3 → plotstyle-1.2.4}/tests/test_core/test_export.py +0 -0
- {plotstyle-1.2.3 → plotstyle-1.2.4}/tests/test_core/test_figure.py +0 -0
- {plotstyle-1.2.3 → plotstyle-1.2.4}/tests/test_core/test_migrate.py +0 -0
- {plotstyle-1.2.3 → plotstyle-1.2.4}/tests/test_engine/test_fonts.py +0 -0
- {plotstyle-1.2.3 → plotstyle-1.2.4}/tests/test_engine/test_latex.py +0 -0
- {plotstyle-1.2.3 → plotstyle-1.2.4}/tests/test_engine/test_rcparams.py +0 -0
- {plotstyle-1.2.3 → plotstyle-1.2.4}/tests/test_integrations/test_seaborn.py +0 -0
- {plotstyle-1.2.3 → plotstyle-1.2.4}/tests/test_preview/test_gallery.py +0 -0
- {plotstyle-1.2.3 → plotstyle-1.2.4}/tests/test_preview/test_print_size.py +0 -0
- {plotstyle-1.2.3 → plotstyle-1.2.4}/tests/test_specs/test_registry.py +0 -0
- {plotstyle-1.2.3 → plotstyle-1.2.4}/tests/test_specs/test_schema.py +0 -0
- {plotstyle-1.2.3 → plotstyle-1.2.4}/tests/test_specs/test_units.py +0 -0
- {plotstyle-1.2.3 → plotstyle-1.2.4}/tests/test_utils/test_io.py +0 -0
- {plotstyle-1.2.3 → plotstyle-1.2.4}/tests/test_utils/test_warnings.py +0 -0
- {plotstyle-1.2.3 → plotstyle-1.2.4}/tests/test_validation/test_checks.py +0 -0
- {plotstyle-1.2.3 → plotstyle-1.2.4}/tests/test_validation/test_report.py +0 -0
|
@@ -9,30 +9,46 @@ and this project adheres to [PEP 440](https://peps.python.org/pep-0440/) version
|
|
|
9
9
|
|
|
10
10
|
## [Unreleased]
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
### Added
|
|
13
|
+
|
|
14
|
+
- **ACM journal preset** (`acm.toml`): two-column format per ACM sigconf template (84.5 mm single column, 180.0 mm double column, 235.0 mm max height); Linux Libertine / Times New Roman font family.
|
|
15
|
+
- **USENIX journal preset** (`usenix.toml`): two-column format per USENIX author guide (85.0 mm single column, 178.0 mm double column, 229.0 mm max height).
|
|
16
|
+
- **`conservative-colorblind` overlay**: 7-color palette safe under all major types of color vision deficiency, including tritanopia. Based on Paul Tol's Vibrant subset.
|
|
17
|
+
- **`si-units` overlay**: loads the `siunitx` LaTeX package (`\usepackage{siunitx}`, `\sisetup{detect-all}`) for consistent SI unit notation in axis labels and annotations. Requires `text.usetex = True`.
|
|
18
|
+
- **`FontFallbackWarning` on missing overlay fonts** (`check_overlay_fonts()`): when none of the required fonts for an overlay are found, a `FontFallbackWarning` is now emitted with the missing font names and a hint to rebuild the Matplotlib font cache.
|
|
19
|
+
- **CLI font-cache hint**: `plotstyle fonts --overlay <overlay>` prints a "Next steps" message when all required fonts are missing, with the exact command to rebuild the Matplotlib font cache.
|
|
20
|
+
|
|
21
|
+
### Fixed
|
|
22
|
+
|
|
23
|
+
- **`tol_rainbow_1` through `tol_rainbow_23` source URL** (`color/data/`): corrected from `personal.sron.nl/~pault/data/colourschemes.pdf` to `sronpersonalpages.nl/~pault/data/colourschemes.pdf` in all 23 files.
|
|
24
|
+
- **`tol_light` palette color order** (`color/data/tol_light.json`, `overlays/tol-light.toml`): color order corrected to match the official Paul Tol source. The previous order had positions 2-9 scrambled relative to the canonical sequence.
|
|
25
|
+
- **`tol_high_contrast` palette color order** (`color/data/tol_high_contrast.json`, `overlays/tol-high-contrast.toml`): corrected to blue, red, yellow (`#004488`, `#BB5566`, `#DDAA33`); was blue, yellow, red.
|
|
26
|
+
|
|
27
|
+
### Changed
|
|
28
|
+
|
|
29
|
+
- **`cjk-japanese` overlay**: Yu Gothic added to `font.family` and `requires.fonts` lists between TakaoGothic and Noto Sans CJK JP. Provides Japanese text support on Windows 10 and 11 out of the box.
|
|
13
30
|
|
|
14
31
|
---
|
|
15
32
|
|
|
16
33
|
## [1.2.3] - 2026-04-30
|
|
17
34
|
|
|
18
|
-
Minor release: automatic journal color cycle, `target_font_pt` typography field,
|
|
35
|
+
Minor release: automatic journal color cycle, `target_font_pt` typography field, global tick and axis defaults, CLI improvements, a full documentation and example audit, and docs image regeneration.
|
|
19
36
|
|
|
20
37
|
### Added
|
|
21
38
|
|
|
22
39
|
- **Automatic journal palette as default color cycle** (`plotstyle.use()`): calling `use("nature")` (or any journal key) now sets the journal's recommended palette as `axes.prop_cycle` automatically. Every `ax.plot()`, `ax.bar()`, and `ax.scatter()` call draws from it without any `color=` argument. A color overlay applied in the same `use()` call overrides this default.
|
|
23
40
|
- **`target_font_pt` field on `TypographySpec`**: optional `float | None` field that records a journal's explicitly stated target font size (as opposed to only a min/max range). When set, `build_rcparams()` uses it as `font.size` instead of the midpoint of the range. `nature.toml` sets `target_font_pt = 7.0` (Nature's guidelines explicitly state 7 pt as the standard text size).
|
|
24
41
|
- **`plotstyle info` CLI shows `Target size:`**: when `target_font_pt` is set for a journal, the `plotstyle info <journal>` command now prints a `Target size:` line under Typography.
|
|
25
|
-
- **
|
|
26
|
-
-
|
|
27
|
-
- **
|
|
28
|
-
- **New test coverage**: `TestUseColorCycle` (automatic palette cycle), `TestUseFontSizeTarget` (target_font_pt font size selection), `TestBuildRcparamsLegend` (Nature legend.frameon), and `TestBuildRcparamsTicks` (Nature inward/mirrored tick rcParams).
|
|
42
|
+
- **Global tick and axis defaults** (`build_rcparams()`): all journal presets now apply inward-facing ticks (`xtick.direction: in`, `ytick.direction: in`), minor ticks on all axes, mirrored tick marks (`xtick.top: True`, `ytick.right: True`), and `legend.frameon: False`. These are applied uniformly via `build_rcparams()` regardless of journal.
|
|
43
|
+
- **Docs images regenerated**: all 9 images in `docs/images/` rebuilt to reflect the automatic palette cycle and `target_font_pt` changes: `quickstart_nature.png`, `multi_panel_science.png`, `palette_comparison.png`, `accessibility_colorblind.png`, `accessibility_grayscale.png`, `gallery_nature.png`, `gallery_ieee.png`, `seaborn_scatter_nature.png`, `overlay_bar.png`.
|
|
44
|
+
- **New test coverage**: `TestUseColorCycle` (automatic palette cycle), `TestUseFontSizeTarget` (target_font_pt font size selection), `TestBuildRcparamsLegend` (legend.frameon), and `TestBuildRcparamsTicks` (inward/mirrored tick rcParams).
|
|
29
45
|
|
|
30
46
|
### Changed
|
|
31
47
|
|
|
32
48
|
- **`examples/03_color_palettes.py`**: added Section 1 demonstrating the automatic default color cycle; renumbered remaining sections 2-6.
|
|
33
49
|
- **`examples/05_validation.py`**: added `is_failure` / `is_warning` convenience property usage.
|
|
34
50
|
- **`examples/09_registry_and_spec.py`**: expanded to cover `target_font_pt`, `is_official`, `assumed_fields`, and `registry.preload()`.
|
|
35
|
-
- **`examples/12_overlays.py`**: added color overlay, grid rendering overlay, scatter + IEEE warning, overlay inspection, and `list_overlays()` with category filter. Imports reorganized to comply with E402
|
|
51
|
+
- **`examples/12_overlays.py`**: added color overlay, grid rendering overlay, scatter + IEEE warning, overlay inspection, and `list_overlays()` with category filter. Imports reorganized to comply with E402; unused loop variable renamed to `_ls` to comply with B007.
|
|
36
52
|
- **Docs**: all docs updated to reflect the automatic palette cycle and `target_font_pt` changes; `colour` spelling standardized to `color` throughout.
|
|
37
53
|
|
|
38
54
|
---
|
|
@@ -84,7 +100,7 @@ Patch release: `simulate_cvd` example, warning quality improvements, and docs/ex
|
|
|
84
100
|
|
|
85
101
|
## [1.2.0] - 2026-04-23
|
|
86
102
|
|
|
87
|
-
Feature release: **overlays**, **units & conversions**, **Seaborn integration**, improved **font/LaTeX controls**, plus major CLI/docs/example expansion.
|
|
103
|
+
Feature release: **overlays**, **units & conversions**, expanded **Seaborn integration**, improved **font/LaTeX controls**, plus major CLI/docs/example expansion.
|
|
88
104
|
|
|
89
105
|
### Added
|
|
90
106
|
|
|
@@ -95,13 +111,13 @@ Feature release: **overlays**, **units & conversions**, **Seaborn integration**,
|
|
|
95
111
|
- `plotstyle overlays [--category <category>]` to list overlays.
|
|
96
112
|
- `plotstyle overlay-info <overlay>` to inspect overlay metadata and `rcParams`.
|
|
97
113
|
- **Font checks for overlays**: `plotstyle fonts --overlay <overlay>` (in addition to `--journal`).
|
|
98
|
-
- **Seaborn integration**: helpers to keep PlotStyle `rcParams` consistent when using Seaborn themes (`patch_seaborn()`, `plotstyle_theme()`, `unpatch_seaborn()`).
|
|
99
114
|
- **Units & conversions**: new/expanded utilities and docs for consistent size specification across specs and helpers.
|
|
100
115
|
- **Matplotlib-native styles compatibility**: support for registering/using PlotStyle presets as Matplotlib styles where applicable.
|
|
101
116
|
- **New examples & previews**: additional example scripts including overlays, Seaborn integration, units/conversions, print-size preview, Matplotlib native styles, and LaTeX/fonts.
|
|
102
117
|
|
|
103
118
|
### Changed
|
|
104
119
|
|
|
120
|
+
- **Seaborn integration expanded**: `unpatch_seaborn()` added to explicitly restore Matplotlib's original `rcParams` after a Seaborn theme call. `patch_seaborn()` and `plotstyle_theme()` were present since `0.1.0a1`; this release adds `unpatch_seaborn()`, a dedicated integration example, and a new Seaborn guide in the docs.
|
|
105
121
|
- **CLI UX improvements**
|
|
106
122
|
- `plotstyle fonts` now supports `--journal` *or* `--overlay` (mutually exclusive, required).
|
|
107
123
|
- More robust argument parsing (e.g. ignores empty entries in `--formats`).
|
|
@@ -116,24 +132,24 @@ Feature release: **overlays**, **units & conversions**, **Seaborn integration**,
|
|
|
116
132
|
|
|
117
133
|
## [1.1.0] - 2026-04-16
|
|
118
134
|
|
|
119
|
-
Minor feature release
|
|
135
|
+
Minor feature release: ergonomics improvements, hardened error handling, and spec updates.
|
|
120
136
|
|
|
121
137
|
### Added
|
|
122
138
|
|
|
123
|
-
- **`quiet` parameter on `JournalStyle.export()
|
|
124
|
-
- **Pre-computed Type 3 font checks
|
|
125
|
-
- **`JournalSpec` key access
|
|
139
|
+
- **`quiet` parameter on `JournalStyle.export()`**: suppresses compliance summaries and manifest output for scripting workflows.
|
|
140
|
+
- **Pre-computed Type 3 font checks**: compliance summary now accepts a pre-computed result for Type 3 font detection, improving performance when the check has already been run by the caller.
|
|
141
|
+
- **`JournalSpec` key access**: `JournalSpec` now supports key-style access, and the dimension check message has been updated for clarity.
|
|
126
142
|
|
|
127
143
|
### Fixed
|
|
128
144
|
|
|
129
|
-
- **`SpecNotFoundError` base classes
|
|
145
|
+
- **`SpecNotFoundError` base classes**: now inherits from both `ValueError` and `KeyError` so existing `except ValueError` and `except KeyError` handlers catch it correctly; a custom `__str__` produces clearer diagnostic messages.
|
|
130
146
|
|
|
131
147
|
### Changed
|
|
132
148
|
|
|
133
|
-
- **IEEE Transactions spec updated
|
|
134
|
-
- **CI documentation build
|
|
135
|
-
- **Module docstrings
|
|
136
|
-
- **Context-manager examples
|
|
149
|
+
- **IEEE Transactions spec updated**: column widths, max height, font family, panel-label properties, and preferred output formats revised to match current IEEE author guidelines.
|
|
150
|
+
- **CI documentation build**: Sphinx `docs` job (`sphinx-build -W -n`) added to the CI workflow; rendered HTML is uploaded as an artifact on every push.
|
|
151
|
+
- **Module docstrings**: expanded and standardised across `__init__.py`, `_utils/`, `color/`, `core/`, and `validation/` for consistent Sphinx rendering.
|
|
152
|
+
- **Context-manager examples**: all `plotstyle.use()` call sites in docs and examples updated to the `with plotstyle.use(...) as style:` form to ensure correct `rcParams` restoration.
|
|
137
153
|
|
|
138
154
|
---
|
|
139
155
|
|
|
@@ -161,7 +177,7 @@ Second alpha: full documentation suite, comprehensive test coverage, and hardene
|
|
|
161
177
|
- **Comprehensive test suite**: new test modules added: `test_style`, `test_palettes`, `test_accessibility`, `test_grayscale`, `test_rendering`, `test_gallery`, `test_print_size`, `test_cli`, `test_io`, `test_warnings`, `test_checks`, `test_report`; existing modules `test_figure`, `test_export`, `test_migrate`, `test_fonts`, and `test_registry` substantially expanded.
|
|
162
178
|
- **Export DPI validation**: `validation/checks/export.py` now emits a hard `FAIL` (instead of a `WARN`) when `savefig.dpi` is a numeric value that is provably below the journal's minimum DPI requirement.
|
|
163
179
|
- **Dependabot**: `.github/dependabot.yml` added for automated dependency-update pull requests.
|
|
164
|
-
- **`_format_panel_label()` range guard**: raises `ValueError` for panel indices
|
|
180
|
+
- **`_format_panel_label()` range guard**: raises `ValueError` for panel indices >= 702 (beyond the two-character `"zz"` label); valid range is now explicitly documented as 0-701.
|
|
165
181
|
|
|
166
182
|
### Changed
|
|
167
183
|
|
|
@@ -181,8 +197,8 @@ First public alpha release.
|
|
|
181
197
|
|
|
182
198
|
- **Core style engine**: `plotstyle.use()` applies journal presets to Matplotlib's `rcParams`; works as a context manager with automatic restoration on exit.
|
|
183
199
|
- **Figure helpers**: `plotstyle.figure()` and `plotstyle.subplots()` create correctly-sized figures at the exact column width and max height specified by each journal.
|
|
184
|
-
- **Auto panel labels**: multi-panel figures receive **(a)**, **(b)**, **(c)**,
|
|
185
|
-
- **Colorblind-safe palettes**: built-in Okabe
|
|
200
|
+
- **Auto panel labels**: multi-panel figures receive **(a)**, **(b)**, **(c)**, ... labels placed according to the journal's style rules.
|
|
201
|
+
- **Colorblind-safe palettes**: built-in Okabe-Ito, Tol Bright, Tol Vibrant, Tol Muted, and Safe Grayscale palettes (`plotstyle.palette()`).
|
|
186
202
|
- **Accessibility previews**: `plotstyle.preview_colorblind()` simulates deuteranopia, protanopia, and tritanopia; `plotstyle.preview_grayscale()` previews grayscale rendering.
|
|
187
203
|
- **Pre-submission validation**: `plotstyle.validate()` checks dimensions, typography, line weights, color accessibility, and export settings against a target journal spec.
|
|
188
204
|
- **Submission-ready export**: `plotstyle.savefig()` saves with font embedding and DPI enforcement; `plotstyle.export_submission()` batch-exports to all formats a journal accepts.
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
cff-version: 1.2.0
|
|
2
|
+
message: "If you use PlotStyle in your research, please cite it using the metadata below."
|
|
3
|
+
type: software
|
|
4
|
+
title: PlotStyle
|
|
5
|
+
version: "1.2.4"
|
|
6
|
+
date-released: "2026-04-27"
|
|
7
|
+
license: MIT
|
|
8
|
+
abstract: >-
|
|
9
|
+
PlotStyle is a Python library that formats Matplotlib and Seaborn figures
|
|
10
|
+
to meet the exact typographic, dimensional, and export requirements of
|
|
11
|
+
major academic journals. It includes built-in presets for journals such as
|
|
12
|
+
Nature, Science, IEEE, ACS, ACM, Cell, PLOS, PRL, Springer, Wiley, Elsevier,
|
|
13
|
+
and USENIX, along with figure validation, colorblind and grayscale accessibility
|
|
14
|
+
previews, composable style overlays, and a CLI for inspecting and comparing
|
|
15
|
+
journal specs.
|
|
16
|
+
authors:
|
|
17
|
+
- family-names: Kaushal
|
|
18
|
+
given-names: Rahul
|
|
19
|
+
alias: rahulkaushal04
|
|
20
|
+
repository-code: "https://github.com/rahulkaushal04/plotstyle"
|
|
21
|
+
url: "https://plotstyle.readthedocs.io"
|
|
22
|
+
identifiers:
|
|
23
|
+
- type: url
|
|
24
|
+
value: "https://pypi.org/project/plotstyle/1.2.4/"
|
|
25
|
+
description: "PyPI release for version 1.2.4"
|
|
26
|
+
keywords:
|
|
27
|
+
- matplotlib
|
|
28
|
+
- seaborn
|
|
29
|
+
- scientific-publishing
|
|
30
|
+
- journal-figures
|
|
31
|
+
- data-visualization
|
|
32
|
+
- academic-research
|
|
33
|
+
- colorblind-accessibility
|
|
34
|
+
- figure-export
|
|
35
|
+
- validation
|
|
36
|
+
- rcParams
|
|
37
|
+
- python
|