Skip to content
v0.14.1
daf2c4b
Compare
Choose a tag to compare

This release provides a number of important bug fixes and small enhancements from Ian Thomas along with infrastructure improvements from Maxime Liquet and new reductions from @tselea.

Enhancements:

  • Improvements to antialiased lines:
    • Support antialiased lines for categorical aggregates (#1081,#1083)
    • Correctly handle NaNs in antialiased line coordinates (#1097)
  • Improvements to rescale_discrete_levels for how='eq_hist':
    • Correct implementation of rescale_discrete_levels (#1078)
    • Check before calling rescale_discrete_levels (#1085)
    • Remove empty histogram bins in eq_hist (#1094)
  • Implementation of first and last reduction (#1093) for data types other than raster.

Bug fixes:

  • Do not snap trimesh vertices to pixel grid (#1092)
  • Correctly orient (y, x) arrays for xarray (#1095)
  • Infrastructure/build fixes (#1080, #1089, #1096)
Compare
Choose a tag to compare

This release has been nearly a year in the making, with major new contributions from Ian Thomas, Thuy Do Thi Minh, Simon Høxbro Hansen, Maxime Liquet, and James Bednar, and additional support from Andrii Oriekhov, Philipp Rudiger, and Ajay Thorve.

Enhancements:

  • Full support for antialiased lines of specified width (#1048, #1072). Previous antialiasing support was limited to single-pixel lines and certain floating-point reduction functions. Now supports arbitrary widths and arbitrary reduction functions, making antialiasing fully supported. Performance ranges from 1.3x to 14x slower than the simplest zero-width implementation; see benchmarks.
  • Fixed an issue with visibility on zoomed-in points plots and on overlapping line plots that was first reported in 2017, with a new option rescale_discrete_levels for how='eq_hist' (#1055)
  • Added a categorical color_key for 2D (unstacked) aggregates (#1020), for producing plots where each pixel has at most one category value
  • Improved docs:

Bugfixes:

Compatibility:

  • Canvas.line() option antialias=True is now deprecated; use line_width=1 (or another nonzero value) instead. (#1048)
  • Removed long-deprecated bokeh_ext.py (#1059)
  • Dropped support for Python 2.7 (actually already dropped from the tests in Datashader 0.12) and 3.6 (no longer supported by many downstream libraries like rioxarray, but several of them are not properly declaring that restriction, making 3.6 much more difficult to support.) (#1033)
  • Now tested on Python 3.7, 3.8, 3.9, and 3.10. (#1033)
1ae52b6
Compare
Choose a tag to compare

Version 0.13.0

Thanks to Jim Bednar, Nezar Abdennur, Philipp Rudiger, and Jean-Luc Stevens.

Enhancements:

  • Defined new dynspread metric based on counting the fraction of non-empty pixels that have non-empty pixels within a given radius. The resulting dynspread behavior is much more intuitive than the old behavior, which counted already-spread pixels as if they were neighbors (#1001)
  • Added ds.count() as the default reduction for ds.by (#1004)

Bugfixes:

  • Fixed array-bounds reading error in dynspread (#1001)
  • Fix color_key argument for dsshow (#986)
  • Added Matplotlib output to the 3_Interactivity getting started page. (#1009)
  • Misc docs fixes (#1007)
  • Fix nan assignment to integer array in RaggedArray (#1008)

Compatibility:

  • Any usage of dynspread with datatypes other than points should be replaced with spread(), which will do what was probably intended by the original dynspread call, i.e. to make isolated lines and shapes visible. Strictly speaking, dynspread could still be useful for other glyph types if that glyph is contained entirely in a pixel, e.g. if a polygon or line segment is located within the pixel bounds, but that seems unlikely.
  • Dynspread may need to have the threshold or max_px arguments updated to achieve the same spreading as in previous releases, though the new behavior is normally going to be more useful than the old.
fcb2950
Compare
Choose a tag to compare

Major release with new features that should really be considered part of the upcoming 0.13 release; please treat all the new features as experimental in this release due to it being officially a minor release (unintentionally).

Massive thanks to these contributors for substantial new functionality:

  • Nezar Abdennur (nvictus), Trevor Manz, and Thomas Caswell for their contributions to the new dsshow() support for using Datashader as a Matplotlib Artist, providing seamless interactive Matplotlib+Datashader plots.
  • Oleg Smirnov for category_modulo and category_binning for by(), making categorical plots vastly more powerful.
  • Jean-Luc Stevens for spread and dynspread support for numerical aggregate arrays and not just RGB images, allowing isolated datapoints to be made visible while still supporting hover, colorbars, and other plot features that depend on the numeric aggregate values.
  • Valentin Haenel for the initial anti-aliased line drawing support (still experimental).

Thanks to Jim Bednar, Philipp Rudiger, Peter Roelants, Thuy Do Thi Minh, Chris Ball, and Jean-Luc Stevens for maintenance and other contributions.

New features:

  • Expanded (and transposed) performance guide table (#961)
  • Add category_modulo and category_binning for grouping numerical values into categories using by() (#927)
  • Support spreading for numerical (non-RGB) aggregate arrays (#771, #954)
  • Xiaolin Wu anti-aliased line drawing, enabled by adding antialias=True to the Canvas.line() method call. Experimental; currently restricted to sum and max reductions ant only supporting a single-pixel line width. (#916)
  • Improve Dask performance issue from #899 using a tree reduction (#926)

Bugfixes:

  • Fix for xarray 0.17 raster files, supporting various nodata conventions (#991)
  • Fix RaggedArray tests to keep up with Pandas test suite changes (#982, #993)
  • Fix out-of-bounds error on Points aggregation (#981)
  • Fix CUDA issues (#973)
  • Fix Xarray handling (#971)
  • Disable the interactivity warning on the homepage (#983)

Compatibility:

  • Drop deprecated modules ds.geo (moved to xarray_image) and ds.spatial (moved to SpatialPandas) (#955)
60e6e7f
Compare
Choose a tag to compare

This release is primarily a compatibility release for newer versions of Rapids cuDF and Numba versions along with a small number of bug fixes. With contributions from @jonmmease, @stuartarchibald, @AjayThorve, @kebowen730, @jbednar and @philippjfr.

  • Fixes support for cuDF 0.13 and Numba 0.48 (#933)
  • Fixes for cuDF support on Numba>=0.51 (#934, #947)
  • Fixes tile generation using aggregators with output of boolean dtype (#949)
  • Fixes for CI and build infrastructure (#935, #948, #951)
  • Updates to docstrings (b1349e3, #950)
Compare
Choose a tag to compare

This release includes major contributions from @maihde (generalizing count_cat to by, span for colorize), @jonmmease (Dask quadmesh support), @philippjfr and @jbednar (count_cat/by/colorize/docs/bugfixes), and Barry Bragg, Jr. (TMS tileset speedups).

New features (see getting_started/2_Pipeline.ipynb for examples):

  • New by() categorical aggregator, extending count_cat to work with other reduction functions, no longer just count. Allows binning of aggregates separately per category value, so that you can compare how that aggregate is affected by category value. (#875, #902, #904, #906). See example in the holoviews docs.
  • Support for negative and zero values in tf.shade for categorical aggregates. (#896, #909, #910, #908)
  • Support for span in _colorize(). (#875, #910)
  • Support for Dask-based quadmesh rendering for rectilinear and curvilinear mesh types (#885, #913)
  • Support for GPU-based raster mesh rendering (via Canvas.quadmesh) (#872)
  • Faster TMS tileset generation (#886)
  • Expanded performance guide (#868)

Bugfixes:

Compatibility (breaking changes and deprecations):

  • To allow negative-valued aggregates, count_cat now weights categories according to how far they are from the minimum aggregate value observed, while previously they were referenced to zero. Previous behavior can be restored by passing color_baseline=0 to count_cat or by.
  • count_cat is now deprecated and removed from the docs; use by(..., count()) instead.
  • Result of a count() aggregation is now uint32, not int32, to distinguish counts from other aggregation types (#910).
  • tf.shade now only treats zero values as missing for count aggregates (uint); zero is otherwise a valid value distinct from NaN (#910).
  • alpha is now respected as the upper end of the alpha range for both _colorize() and _interpolate() in tf.shade; previously only _interpolate respected it.
  • Added new nansum_missing utility for working with Numpy>1.9, where nansum no longer returns NaN for all-NaN values.
  • ds.geo and ds.spatial modules are now deprecated; their contents have moved to xarray_spatial and spatialpandas, respectively. (#894)

Download and install: https://datashader.org/getting_started

baf709f
Compare
Choose a tag to compare

This release includes major contributions from @jonmmease (polygon rendering, spatialpandas), along with contributions from @philippjfr and @brendancol (bugfixes), and @jbednar (docs, warnings, and import times).

New features:

  • Polygon (and points and lines) rendering for spatialpandas extension arrays (#826, #853)
  • Quadmesh GPU support (#861)
  • Much faster import times (#863)
  • New table in docs listing glyphs supported for each data library (#864,#867)
  • Support for remote Parquet filesystems (#818,#866)

Bugfixes and compatibility:

  • Misc bugfixes and improvements (#844, #860, #866)
  • Fix warnings and deprecations in tests (#859)
  • Fix Canvas.raster (padding, mode buffers, etc. #862)

Download and install: https://datashader.org/getting_started

Compare
Choose a tag to compare

This release includes major contributions from @jonmmease (GPU support), along with contributions from @brendancol (viewshed speedups), @jbednar (docs), and @jsignell (examples, maintenance, website).

New features:

  • Support for CUDA GPU dataframes (cudf and dask_cudf) (#794, #793, #821, #841, #842)
  • Documented new quadmesh support (renaming user guide section 5_Rasters to 5_Grids to reflect the more-general grid support) (#805)

Bugfixes and compatibility:

  • Avoid double-counting line segments that fit entirely into a single rendered pixel (#839)
  • Improved geospatial toolbox, including 75X speedups to viewshed algorithm (#811, #824, #844)
ef9a62f
Compare
Choose a tag to compare

This release includes major contributions from @jonmmease (quadmesh and filled-area support), @brendancol (geospatial toolbox, tile previewer), @philippjfr (distributed regridding, dask performance), and @jsignell (examples, maintenance, website).

New features:

  • Native quadmesh (canvas.quadmesh()) support (for rectilinear and curvilinear grids -- 3X faster than approximating with a trimesh; #779)
  • Filled area (canvas.area()) support (#734)
  • Expanded geospatial toolbox, with support for:
    • Zonal statistics (#782)
    • Calculating viewshed (#781)
    • Calculating proximity (Euclidean and other distance metrics, #772)
  • Distributed raster regridding with Dask (#762)
  • Improved dask performance (#798, #801)
  • tile_previewer utility function (simple Bokeh-based plotting of local tile sources for debugging; #761)

Bugfixes and compatibility:

  • Compatibility with latest Numba, Intake, Pandas, and Xarray (#763, #768, #791)
  • Improved datetime support (#803)
  • Simplified docs (now built on Travis, and no longer requiring GeoViews) and examples (now on examples.pyviz.org)
  • Skip rendering of empty tiles (#760)
  • Improved performance for point, area, and line glyphs (#780)
  • InteractiveImage and Pipeline are now deprecated; removed from examples (#751)
77defac
Compare
Choose a tag to compare

This release includes major contributions from @jonmmease (raqgged array extension, SpatialPointsFrame, row-oriented line storage, dask trimesh support), @jsignell (maintenance, website), and @jbednar (Panel-based dashboard).

New features:

  • Simplified Panel-based dashboard using new Param features; now only 48 lines with fewer new concepts (#707)
  • Added pandas ExtensionArray and Dask support for storing homogeneous ragged arrays (#687)
  • Added SpatialPointsFrame and updated census, osm-1billion, and osm examples to use it (#702, #706, #708)
  • Expanded 8_Geography.ipynb to document other geo-related functions
  • Added Dask support for trimesh rendering, though computing the mesh initially still requires vertices and simplicies to fit into memory (#696)
  • Add zero-copy rendering of row-oriented line coordinates, using a new axis argument (#694)

Bugfixes and compatibility:

  • Added lnglat_to_meters to geo module; new code should import it from there (#708)