Skip to content

3.2.0 - 2025-10-26

Previous: 3.1.1 | Next: 3.2.1 → | 📋 All Releases | 🏷️ GitHub Release


Summary: Enhanced plotting capabilities with consistent color management, custom plotting kwargs support, and centralized I/O handling.

If upgrading from v2.x, see the v3.0.0 release notes and Migration Guide.

✨ Added

Color management: - setup_colors() method for CalculationResults and SegmentedCalculationResults to configure consistent colors across all plots - Group components by colorscales: results.setup_colors({'CHP': 'reds', 'Storage': 'blues', 'Greys': ['Grid', 'Demand']}) - Automatically propagates to all segments in segmented calculations - Colors persist across all plot calls unless explicitly overridden - Flexible color inputs: Supports colorscale names (e.g., 'turbo', 'plasma'), color lists, or label-to-color dictionaries - Cross-backend compatibility: Seamless color handling for both Plotly and Matplotlib

Plotting customization: - Plotting kwargs support: Pass additional arguments to plotting backends via px_kwargs, plot_kwargs, and backend_kwargs parameters - New CONFIG.Plotting configuration section: - default_show: Control default plot visibility - default_engine: Choose 'plotly' or 'matplotlib' - default_dpi: Set resolution for saved plots - default_facet_cols: Configure default faceting columns - default_sequential_colorscale: Default for heatmaps (now 'turbo') - default_qualitative_colorscale: Default for categorical plots (now 'plotly')

I/O improvements: - Centralized JSON/YAML I/O with auto-format detection - Enhanced NetCDF handling with consistent engine usage - Better numeric formatting in YAML exports

♻️ Changed

  • Default colorscale: Changed from 'viridis' to 'turbo' for better perceptual uniformity
  • Color terminology: Standardized from "colormap" to "colorscale" throughout for Plotly consistency
  • Plotting internals: Now use xr.Dataset as primary data type (DataFrames automatically converted)
  • NetCDF engine: Switched back to netcdf4 engine following xarray updates and performance benchmarks

🔥 Removed

  • Removed unused plotting.pie_with_plotly() method

🐛 Fixed

  • Improved error messages when using engine='matplotlib' with multidimensional data
  • Better dimension validation in results.plot_heatmap()

📝 Docs

  • Enhanced examples demonstrating setup_colors() usage
  • Updated terminology from "colormap" to "colorscale" in docstrings

👷 Development

  • Fixed concurrency issue in CI
  • Centralized color processing logic into dedicated module
  • Refactored to function-based color handling for simpler API

Previous: 3.1.1 | Next: 3.2.1 → | 📋 All Releases | 🏷️ GitHub Release