Releases: raphaelquast/EOmaps
EOmaps v8.3.1
🔨 Fixes
- fix minor dependency issues reported on conda-forge
EOmaps v8.3
A new minor release that brings a few features and a much improved documentation!
🌳 New
- There is a new method
ScaleBar.set_rotation
to set the rotation-angle of a scalebar. m.set_frame(gdf=...)
can now be used to set arbitrary map-boundaries based ongeopandas.GeoDataFrames
(multipolygon support requires upcoming cartopy v0.24 release)- There is a new contextmanager
Maps.delay_draw
that can be used to delay intermediate draw-events and speed up the creation of complex figures.
📖 Documentation updates and new theme
🚀 Big thanks to @Fanchengyan for his efforts to improve the documentation!
- Docs now use the
PyData Sphinx Theme
- New improved example gallery based on
myst_sphinx_gallery
ready to be filled with a lot of examples!
🔨 Fixes
- Fix issues with "inherit_position=False" for colorbars
- Make sure cached layers are re-drawn if a colorbar changes the axes-size
- Fix treatment of assigned "search_radius" for
pick
callbacks if 1D brute-force search is used - Update GitHub actions and documentation dependencies
EOmaps v8.3
A new minor release that brings a few features and a much improved documentation!
🌳 New
- There is a new method
ScaleBar.set_rotation
to set the rotation-angle of a scalebar. m.set_frame(gdf=...)
can now be used to set arbitrary map-boundaries based ongeopandas.GeoDataFrames
(multipolygon support requires upcoming cartopy v0.24 release)- There is a new contextmanager
Maps.delay_draw
that can be used to delay intermediate draw-events and speed up the creation of complex figures.
📖 Documentation updates and new theme
🚀 Big thanks to @Fanchengyan for his efforts to improve the documentation!
- Docs now use the
PyData Sphinx Theme
- New improved example gallery based on
myst_sphinx_gallery
ready to be filled with a lot of examples!
🔨 Fixes
- Fix issues with "inherit_position=False" for colorbars
- Make sure cached layers are re-drawn if a colorbar changes the axes-size
- Fix treatment of assigned "search_radius" for
pick
callbacks if 1D brute-force search is used - Update GitHub actions and documentation dependencies
EOmaps v8.2.1
A first series of bugfixes for v8.2
🔨 Fixes
- ❗Fix identification of default shape based on dataset size
- ❗Fix issues with unmanaged artists on inset-maps
- Explicitly check if norm is provided as string before setting data limits
- Provide more descriptive (info) error message if data cannot be plotted
- Avoid using classification bins as labels if a large number of bins is used (>30)
- Make sure to resample colormaps in case more bins than colors are used
- Avoid shape radius estimation if no data is set
- Avoid unnecessary draw-triggers for datasets if the "all" layer is visible
- Remove warning for widgets if backends other than "ipympl" are used
EOmaps v8.2
A new minor release with some fixes, many improvements to the internals and a few new features!
🌳 New
- You can now use
m.add_colorbar(layer=..)
to override the layer at which the colorbar is plotted - There is a new method
m.set_shade_dpi(...)
to override the dpi used by shade-shapes.
(Useful to fix data aggregation resolution for high-dpi exports or to adjust resolution to better suit data density)
🌦️ Changes
- Grid-snapping of the
LayoutEditor
now snaps to all edges of the axes
(Useful in case the axis-size is not a multiple of the grid-spacing)- If multiple axes are moved, the first selected object acts as anchor
- ❗ The default matplotlib keymap
p : "toggle pan/zoom tool"
is now active again
🌩️ Internals (no effects on the public API)
- Unit-tests now use image-comparison to ensure stable image export results
- ❗ The
Maps
class has been refactored (Maps
andMapsBase
) to make the code more accessible and easier to handle.
🔨 Fixes
- fix handling of axes on combined layers in the LayoutEditor
- allow custom scatter_points marker shapes for "mark" callback
- fix issues with identification of grid-label position with projections that create non-intersecting grid-lines
- always print basic exception info on issue during layer-change action
- make sure to trigger a figure-update after adding a scalebar
- address pyproj warnings for pyproj>=3.5
EOmaps v8.1.1
A quick bugfix release to address issues with disappearing colorbars on multiple layers.
EOmaps v8.1.1
🔨 Fixes
- ❗ Fix colorbars on different layers only show after additional draw
- Handle numpy linalg errors resulting from singular colorbar axes
EOmaps v8.1
A minor release that brings a new plot-shape!
Make sure to also checkout the release-notes for EOmaps v8.0!
🌳 New
New hexbin shape
There is a new shape to visualize your data as hexagonal-bin plots!
m.set_shape.hexbin(size=(20, 40), aggregator="mean")
🔨 Fixes
- ❗ fix using multiple sizes with
m.set_shape.scatter_points(size=...)
- Fix scroll events should be captured in Jupyter Notebooks if the LayoutEditor is active
- Fix placement of
InsetMaps
indicator-lines if multiple boundary intersections are found - Fix clipping issues if
m.get_extent()
is used with a crs other than the plot-crs - Fix using
m.add_gridlines
with uneven number of explicit lon/lat values - Unify treatment of
ellipses
andgeod_circle
shapes - Fix using kwargs to style the boundary of the
peek_layer
callback area - Fix using "hist_size=None" when adding colorbars
- Fix hiding histogram axes with hist_size=0
- Fix identification of layers that contain only dynamic artists
- Fix issues with scalebars outside the axes clip boundary
- Allow passing an explicit norm to
m.plot_map
if no classification is used - Allow using
bbox=None
with annotations to to hide the bounding-box - Identification of the directions for
m.add_gridlines(where="tblr")
has been improved
EOmaps v8.1
A minor release that brings a new plot-shape!
Make sure to also checkout the release-notes for EOmaps v8.0!
🌳 New
New hexbin shape
There is a new shape to visualize your data as hexagonal-bin plots!
m.set_shape.hexbin(size=(20, 40), aggregator="mean")
🔨 Fixes
- ❗ fix using multiple sizes with
m.set_shape.scatter_points(size=...)
- Fix scroll events should be captured in Jupyter Notebooks if the LayoutEditor is active
- Fix placement of
InsetMaps
indicator-lines if multiple boundary intersections are found - Fix clipping issues if
m.get_extent()
is used with a crs other than the plot-crs - Fix using
m.add_gridlines
with uneven number of explicit lon/lat values - Unify treatment of
ellipses
andgeod_circle
shapes - Fix using kwargs to style the boundary of the
peek_layer
callback area - Fix using "hist_size=None" when adding colorbars
- Fix hiding histogram axes with hist_size=0
- Fix identification of layers that contain only dynamic artists
- Fix issues with scalebars outside the axes clip boundary
- Allow passing an explicit norm to
m.plot_map
if no classification is used - Allow using
bbox=None
with annotations to to hide the bounding-box - Identification of the directions for
m.add_gridlines(where="tblr")
has been improved
EOmaps v8.0.2
EOmaps v8.0.2
- fix issues with missing companion-widget source files
- fix issues with missing
dask-expr
dependency fordatashader
EOmaps v8.0
A new major release that brings a lot of important updates and improvements for EOmaps!
A big thanks goes to @banesullivan, @yeelauren and @jhkennedy who provided many useful suggestions and comments to improve EOmaps in the PyOpenSci review (pyOpenSci/software-submission#138)!
§ New License!
The EOmaps source code is now licensed under a BSD 3 Clause License to make it easier for users and contributors to improve and extend the codebase and to use EOmaps to build awesome tools for geo-data analysis!
Make sure to have a look at the licensing-note in the FAQ of the docs for some more details!
Interested in contributing to EOmaps? Checkout the updated Contribution Guide!
⚠️ Major changes to pip
install
Dependency management for EOmaps
has been improved to split between required and optional dependencies.
❗
pip install eomaps
now only installs the bare minimum requirements to runEOmaps
.
❗To install EOmaps with all optional dependencies, usepip install eomaps[all]
.
Make sure to have a look at the updated installation instructions in the docs for more details on how to selectively install optional dependencies!
🌳 New
m.set_data(...)
now directly acceptsxarray.Datasets
as input (see docs on how to assign datasets)- There is a new pre-defined keypress callback:
overlay_layer
- You can use it to toggle showing a layer on top of the currently visible layer.
m.all.cb.keypress.attach.overlay_layer(<layer-name>, key="a")
- You can use it to toggle showing a layer on top of the currently visible layer.
- The
switch_layer
keypress-callback now also accepts lists of layer-names (or lists of tuples(name, transparency)
) - m.cb.pick.share_events() now supports the additional kwarg
"ensure_same_id"
- If True, all maps that share the pick-event will use the same ID to identify the relevant datapoint
- If False, all maps that share the pick-event identify the closest datapoint based on the (reprojected) click position.
- The
LayoutEditor
now accepts-1
as width/height value for axes (to auto-adjust the value)
🕹️ Jupyter Widgets
There is now a collection of pre-configured Jupyter Widgets that can be used as control elements in Jupyter Notebooks!
Make sure to checkout the corresponding 🕹️ EOmaps Jupyter Widgets section in the docs!
🌦️ Changes
- ❗ Installation config is now provided as a
pyproject.toml
file (instead ofsetup.py
) - ❗ Supported python version is now
>=3.8
- EOmaps now uses qtpy to support multiple Qt versions for the 🧰 Companion Widget!
_version.py
has been removed. The version is now specified in the[project]
category of thepyproject.toml
file.- Actions now use
micromamba
to setup (and cache) test environments - Colorbar kwargs
show_outline
andylabel
have been renamed tooutline
andhist_label
The following (previously deprecated) methods are now removed:
m.set_data_specs
$\Rightarrow$ usem.set_data
insteadm.add_wms.DLR_basemaps...
$\Rightarrow$ usem.add_wms.DLR.basemap...
insteadm_inset.indicate_inset_extent
$\Rightarrow$ usem_inset.add_extent_indicator
instead
📖 Documentation updates
Make sure to checkout the fully updated API docs!
- Documentation environment was updated to most recent build dependencies
- Only minimal requirements to import eomaps are now installed for docs-build
- Info on how to configure VSCode/VSCodium for EOmaps has been added to the docs
- In general, the docs now (gradually switch to) use MySt and Jupyter Notebooks (parsed with myst_nb) to improve formatting, examples etc.
🔨 Fixes
- Make sure the widget is compatible with both Qt5 and Qt6
- Fix forcing colorbar-position inheritance
- Fix treatment of colorbar histogram style kwargs (e.g. edgecolor, facecolor, etc.)
- Address
numpy
binary incompatibility warning ifnetCDF4
is imported after numpy - Fix inheriting colorbar positions from other colorbars
- Address unittest issue with contour-shape labels
- Avoid blocking the terminal in unittests for jupyter notebooks
- Fix missing docstring for DLR webmap service
- Fix issues for move-callbacks shared between multiple Maps
- Fix visibility of datasets when using "dynamic_shade_indicator" colorbars
- Fix assignment of vmin/vmax for "count" based shade-aggregation
- Fix treatment of masked values in evaluation of vmin/vmax for encoded datasets
- Fix issues with help-text popups of the CompanionWidget LayerTabBar
- Improvements for colorbar implementation
- Unify treatment of layer-name parsing
- Try to push current view to toolbar nav-stack after layout-restore
- Fix issues with help-popups of the LayerTabBar of the companion-widget
- Fix issues with figure-exports after
m.apply_layout(...)
- Fix treatment of reprojected 1D datasets with
shade_raster
shape - Fix parsing maxsize argument in companion widget for
raster
-shape - Fix treatment of infinite values in weighted colorbar histograms
- Allow passing transform-kwarg to
m.add_text(...)
- Fix truncating companion-widget title if too long
- Make sure companion-widget dataset-dropdown is elided
- Avoid memory-leaks caused by artist-references in pick-containers
- Fix
numpy.ma.masked_array
issues with datashader/numba when using"shade_points"
- Fix handling pick-events that do not have an "idx" property
- Fix raster-aggregation if block-size cannot be evaluated (e.g. None)
- Fix handling of pick-events that do not have an "idx" property
- Make sure keypress-events are triggered irrespective of the toolbar mode
- Make sure LayoutEditor x0, y0 values are always set as specified
- Fix issues with string-type dpi values passed to savefig
- Avoid pandas dependency when attempting to use
raster
shape with 1D datasets - Make sure data encoding fill-value is properly applied
EOmaps v8.0.1
A new major release that brings a lot of important updates and improvements for EOmaps!
A big thanks goes to @banesullivan, @yeelauren and @jhkennedy who provided many useful suggestions and comments to improve EOmaps in the PyOpenSci review (pyOpenSci/software-submission#138)!
§ New License!
The EOmaps source code is now licensed under a BSD 3 Clause License to make it easier for users and contributors to improve and extend the codebase and to use EOmaps to build awesome tools for geo-data analysis!
Make sure to have a look at the licensing-note in the FAQ of the docs for some more details!
Interested in contributing to EOmaps? Checkout the updated Contribution Guide!
⚠️ Major changes to pip
install
Dependency management for EOmaps
has been improved to split between required and optional dependencies.
❗
pip install eomaps
now only installs the bare minimum requirements to runEOmaps
.
❗To install EOmaps with all optional dependencies, usepip install eomaps[all]
.
Make sure to have a look at the updated installation instructions in the docs for more details on how to selectively install optional dependencies!
🌳 New
m.set_data(...)
now directly acceptsxarray.Datasets
as input (see docs on how to assign datasets)- There is a new pre-defined keypress callback:
overlay_layer
- You can use it to toggle showing a layer on top of the currently visible layer.
m.all.cb.keypress.attach.overlay_layer(<layer-name>, key="a")
- You can use it to toggle showing a layer on top of the currently visible layer.
- The
switch_layer
keypress-callback now also accepts lists of layer-names (or lists of tuples(name, transparency)
) - m.cb.pick.share_events() now supports the additional kwarg
"ensure_same_id"
- If True, all maps that share the pick-event will use the same ID to identify the relevant datapoint
- If False, all maps that share the pick-event identify the closest datapoint based on the (reprojected) click position.
- The
LayoutEditor
now accepts-1
as width/height value for axes (to auto-adjust the value)
🕹️ Jupyter Widgets
There is now a collection of pre-configured Jupyter Widgets that can be used as control elements in Jupyter Notebooks!
Make sure to checkout the corresponding 🕹️ EOmaps Jupyter Widgets section in the docs!
🌦️ Changes
- ❗ Installation config is now provided as a
pyproject.toml
file (instead ofsetup.py
) - ❗ Supported python version is now
>=3.8
- EOmaps now uses qtpy to support multiple Qt versions for the 🧰 Companion Widget!
_version.py
has been removed. The version is now specified in the[project]
category of thepyproject.toml
file.- Actions now use
micromamba
to setup (and cache) test environments - Colorbar kwargs
show_outline
andylabel
have been renamed tooutline
andhist_label
The following (previously deprecated) methods are now removed:
m.set_data_specs
$\Rightarrow$ usem.set_data
insteadm.add_wms.DLR_basemaps...
$\Rightarrow$ usem.add_wms.DLR.basemap...
insteadm_inset.indicate_inset_extent
$\Rightarrow$ usem_inset.add_extent_indicator
instead
📖 Documentation updates
Make sure to checkout the fully updated API docs!
- Documentation environment was updated to most recent build dependencies
- Only minimal requirements to import eomaps are now installed for docs-build
- Info on how to configure VSCode/VSCodium for EOmaps has been added to the docs
- In general, the docs now (gradually switch to) use MySt and Jupyter Notebooks (parsed with myst_nb) to improve formatting, examples etc.
🔨 Fixes
- Make sure the widget is compatible with both Qt5 and Qt6
- Fix forcing colorbar-position inheritance
- Fix treatment of colorbar histogram style kwargs (e.g. edgecolor, facecolor, etc.)
- Address
numpy
binary incompatibility warning ifnetCDF4
is imported after numpy - Fix inheriting colorbar positions from other colorbars
- Address unittest issue with contour-shape labels
- Avoid blocking the terminal in unittests for jupyter notebooks
- Fix missing docstring for DLR webmap service
- Fix issues for move-callbacks shared between multiple Maps
- Fix visibility of datasets when using "dynamic_shade_indicator" colorbars
- Fix assignment of vmin/vmax for "count" based shade-aggregation
- Fix treatment of masked values in evaluation of vmin/vmax for encoded datasets
- Fix issues with help-text popups of the CompanionWidget LayerTabBar
- Improvements for colorbar implementation
- Unify treatment of layer-name parsing
- Try to push current view to toolbar nav-stack after layout-restore
- Fix issues with help-popups of the LayerTabBar of the companion-widget
- Fix issues with figure-exports after
m.apply_layout(...)
- Fix treatment of reprojected 1D datasets with
shade_raster
shape - Fix parsing maxsize argument in companion widget for
raster
-shape - Fix treatment of infinite values in weighted colorbar histograms
- Allow passing transform-kwarg to
m.add_text(...)
- Fix truncating companion-widget title if too long
- Make sure companion-widget dataset-dropdown is elided
- Avoid memory-leaks caused by artist-references in pick-containers
- Fix
numpy.ma.masked_array
issues with datashader/numba when using"shade_points"
- Fix handling pick-events that do not have an "idx" property
- Fix raster-aggregation if block-size cannot be evaluated (e.g. None)
- Fix handling of pick-events that do not have an "idx" property
- Make sure keypress-events are triggered irrespective of the toolbar mode
- Make sure LayoutEditor x0, y0 values are always set as specified
- Fix issues with string-type dpi values passed to savefig
- Avoid pandas dependency when attempting to use
raster
shape with 1D datasets - Make sure data encoding fill-value is properly applied
EOmaps v8.0rc2
A third release-candidate for EOmaps v8.
For a full list of upcoming changes, fixes and improvements, see #205
EOmaps v8.0rc1
A second release-candidate for EOmaps v8.
For a full list of upcoming changes, fixes and improvements, see #205