Releases: raphaelquast/EOmaps
EOmaps v8.0rc0
A first release-candidate for EOmaps v8.
For a full list of upcoming changes, fixes and improvements, see #205
EOmaps v7.3.3
Another round of bug-fixes for v7.3.
🌳 New
MapsGrid
objects now have dedicated.show()
and.snapshot()
methods
🔨 Fixes
- ❗ fix restoring visible layer in interactive backends after using
m.savefig()
- ❗ fix issues with InsetMaps in
ipympl
backend - fix re-drawing spines with
m.set_frame()
if corners are not rounded - fix colorbar should use figure directly instead of relying on
plt.gcf
- fix re-fetching backgrounds if colorbars change axes sizes
- fix parsing "maxsize" argument for raster-shape in companion-widget
- fix treatment of weighted colorbar histograms with (out_of_range_vals="masked")
EOmaps v7.3.2
A second bugfix release for v7.3 that brings some important fixes for Jupyter Notebooks, custom WebMap services and RGB/RGBA composite plots.
🌳 New
- Style kwargs are now supported when adding multiple preset-features in one go, for example:
m = Maps() m.add_feature.preset("coastline", "ocean", "land", alpha=0.5)
- You can now specify additional wms properties when using custom WebMap services, for example:
my_wms = m.add_wms.get_service("service-url", service_type="wms", version=1.3.0)
🌦️ Changes
- The figure-header added by the Jupyter-notebook
ipympl
backend is now hidden by default.
To revert back to the old behavior (and enable the header), use:%matplotlib widget m = Maps() m.f.canvas.header_visible = True
🔨 fixes
- ❗ fix issues with RGB/RGBA composite plots
- ❗ fix UserDefined Classification issue: max-bin replaced by data-max
- ❗ fix using transparent snapshots in IPython/Jupyter Notebooks
- fix duplicated figures shown in jupyter notebooks inline backend
- fix re-fetching backgrounds and spines with
m.set_frame()
- fix using
m.set_frame()
in jupyter notebook inline backend - improve syntax for disabling draw or update in the BlitManager
- improve handling of issues with "tight_bbox" redraws
- avoid logging during draw on higher levels
- avoid turning off interactive mode with the jupyter notebook inline backend
- allow passing kwargs to custom WebMap services
EOmaps v7.3.1
A first series of bugfixes for v7.3.
🌦️ changes
-
InsetMap indicator lines are now only drawn between the boundaries of the InsetMap and its extent.
You can add markers at the connection points with:
m_inset.add_indicator_line(m, marker="o", markersize=10)
🔨 Fixes
- fix re-drawing backgrounds on add/remove gridlines and gridlabels
- fix re-drawing backgrounds on
m.set_frame
- fix triggering on_layer callbacks defined on InsetMaps
- fix custom text positioning with
m.add_title
- fix handling of multiple inset-indicator lines
- fix passing InsetMap boundary colors as RGBA tuples
EOmaps v7.3
A new minor release that brings a lot of fixes and some nice new functionalities!
🌳 New
- There is a new convenience method to quickly update the properties of the frame of a map:
- set boundary line properties and use rounded corners for map boundaries
- set background patch color
m = Maps()
m.set_frame(rounded=0.5, edgecolor="r", linewidth=2, facecolor="0.5")
m.add_annotation()
andm.add_marker()
now support the"update"
kwarg to override update triggers
(useful to avoid unnecessary updates if multiple dynamic annotations/markers are added in a callback)m.add_gdf()
now supports the "permanent" kwarg to control if artists are updated on each event
or added as background-artists- The 🚀 Contribution guide contains a new chapter on how to build the docs!
🌦️ Changes
- ❗ Using
m.show()
no longer activates the layer associated with the calling Maps object.
(usem.show_layer(m.layer)
to show the layer of a selected Maps object!) - Activating the
AnnotationEditor
now clears all currently visible temporary artists and disables all callbacks
🔨 Fixes
- ❗fix zooming datasets with individual shape sizes for each datapoints
- ❗fix using the save-button in the normal matplotlib toolbar to save a figure
- ❗fix custom axis background patch color is only visible on figure export
- ❗fix grid-labels are not properly updated on pan/zoom events
- fix identification of layers that only exist on
InsetMaps
- fix annotation editor clears annotation text on companion-widget init
- fix all-nan slice warnings on vmin/vmax estimation if no data-values are provided
- fix single geod_circle radius parsed to 1D array in setter
- fix using
m.add_gdf(permanent=False)
to add dynamically updated geometries - fix annotation editor issues if annotation is not attached to the figure
- fix
m.get_extent()
should not return coordinates outside the crs bounds - fix closing companion-widgets of child-maps on figure close
- fix clearing snapshot cells with
m.show()
- fix
m.util.layer_selector()
should remain responsive during toolbar actions - fix using
m.cb.<method>.set_execute_during_toolbar_action()
on child Maps objects - improve handling of errors during snapshot creation
- remove
rtree
and add default python version to development env file - fix restoring axes backgrounds in gui after savefig
EOmaps v7.2.1
A first bugfix release for v7.2 that also brings some nice performance improvements!
Make sure to also check the release-notes for EOmaps v7.2!
🔨 Fixes
- ❗ Fix issues with aggregated datasets outside the currently visible extent
- ❗ Fix displacement of grid-labels on figure export with dpi other than the native dpi
- ❗ Fix dataset export issues with
"agg"
backend on some of the plot-shapes - general performance updates for background-fetching and caching
- avoid activating the companion widget when webagg backend is active
🌳 New
- New method for raster-data aggregation:
"mode"
(e.g. most common value) - The behavior of callbacks during toolbar actions can now be set via
m.cb.<method>.set_execute_during_toolbar_action()
- New
.remove()
method for grid-lalbels
🌦️ Changes
- To avoid issues with
"webagg"
derived backends, custom"move"
callbacks no longer trigger automatic updates of the plot.- ❗ Explicitly call
m.BM.update()
in custom move-callbacks to trigger an update!
- ❗ Explicitly call
EOmaps v7.2
A mew minor release that brings a lot of improvements for raster-data visualization!
🌳 New
Major improvements for raster-data visualization!
The raster-shape (e.g. m.set_shape.raster
) now has data-aggregation capabilities!
This means that the
raster
shape can now be used also for arbitrarily sized datasets (as long as they fit in memory)
(so far tested with datasets up to 2 billion datapoints)
In short, this means:
- Datasets larger than
maxsize
will be aggregated prior to plotting to avoid slow load-times for extremely large datasets - Aggregation can be turned off using
maxsize=None
(e.g. to get the behavior prior to v7.2) - By default, only datasets larger than 5 million datapoints will be aggregated prior to plotting
For more details, check the docs for the raster-shape!
🔨 Fixes
- ❗ avoid activating matplotlibs interactive mode by default
- fix identification of data-limits and colormap for GeoTiffs
🌦️ Changes
raster
is now used as default plot shape also for very large datasets
EOmaps v7.1.2
A second minor bugfix release for v7.1.2
Make sure to check the release-notes for EOmaps v7.1 as well!
🔨 Fixes
- fix import error when adding
wms
layers - only log unique picker names for multi-geometry GeoDataFrames
- allow using
scatter_points
as marker-shape - fix setting permanent-kwarg for markers
- fix search-radius should default to
m.cb.pick._search_radius
- return created annotation object in
m.add_annotation()
- fix docstrings for get/set extent
- avoid reprojection of gdf if init or cartopy crs can be identified
- add more descriptive repr for Maps objects
- make sure to only re-evaluate scalebar scale on extent changes
contributing.md
file added
EOmaps v7.1.1
A first bugfix release for EOmaps v7.1
Make sure to check the release-notes for EOmaps v7.1 as well!
🔨 Fixes
- ❗fix delay on figure close due to unnecessary background re-fetch during cleanup
- ❗fix OSM nominatim query url (e.g.
m.set_extent_to_location
) - fix mask_radius for voronoi and delaunay should return a list not a generator
- address matplotlib deprecation of
f.canvas.key_release_event
- fix treatment of layers starting with a single underscore in utility sliders and selectors
- fix singular matrix issues when using colorbars in the layout editor
- fix adjusting colorbars that inherit the position in the layout editor
EOmaps v7.1
A new minor release that introduces contour plots and brings some nice updates for the companion widget!
Make sure to check the release-notes for EOmaps v7.0 for an overview of all new features that arrived with v7.x
🌳 New
Contour plots!
-
There is a new plot-shape:
m.set_shape.contour()
- it can be used to draw contour-plots (filled shapes or lines) of regular (2D) or irregular (1D) datasets!
- use
colorbar.indicate_contours()
to indicate the contour-levels on an existing colorbar
-
Checkout the new Contour Plot Example in the docs for more details!
Companion widget updates
- The drop-down menu for WebMaps is now easier to navigate and has properly grouped entries
- The "Add Feature" widget now has individual buttons for each category and properly grouped entries
Map Feature Infos
The Editor tab of the companion widget now offers a new button for each artist
that opens a popup with additional information on the feature (if available)
- General infos (Licensing, References etc.)
- Source code to reproduce the feature
Checkout the corresponding section in the docs for more details: Additional information on Features and WebMaps
⚠️ Deprecations
-
The following arguments of
m.new_layer()
are depreciated and will be removed in upcoming releases:-
copy_data_specs
$\rightarrow$ inherit_data
-
copy_classify_specs
$\rightarrow$ inherit_classification
-
copy_shape
$\rightarrow$ inherit_shape
To create a new layer (or map) that uses the same data and classification as the Maps-object
m
, you can now use:m2 = m.new_layer(inherit_data=True, inherit_classification=True) m2 = m.new_map(ax=222, inherit_data=True, inherit_classification=True)
-
-
Using the WebMap service name
DLR_basemaps
is deprecated- services are now integrated in the parent category
DLR
(usem.add_wms.DLR.basemap...
to access basemap features)
- services are now integrated in the parent category
🔨 Fixes
- ❗ fix compatibility with
python < 3.9
- run unittests on
python 3.8
as well - remove no longer needed
mamba
requirementnumpy < 1.24
- fix toggling of the AnnotationEditor for multiple maps in one figure
- fix setting plot-extent for GeoDataFrames with
m.add_gdf(dataframe, set_extent=True)
- fix classification issues for encoded masked datasets
- fix resetting of linestyles on layout editor exit