Releases: holoviz/datashader
Release list
0.6.5
Major release with extensive support for triangular meshes and changes to the raster API.
New features:
- Trimesh support: Rendering of irregular triangular meshes using
Canvas.trimesh()(see user guide) (#525,#552) - Added a new website at datashader.org, with new Getting Started pages and an extensive User Guide, with about 50% new material not previously in example notebooks. Built entirely from Jupyter notebooks, which can be run in the
examples/directory. Website is now complete except for sections on points (see the nyc_taxi example in the meantime). Canvas.raster()now accepts xarray Dataset types, not just DataArrays, with the specific DataArray selectable from the Dataset using thecolumn=argument of a supplied aggregation function.tf.Images()now displays anything with an HTML representation, to allow laying out Pandas dataframes alongside datashader output.
Bugfixes and compatibility:
- Changed Raster API to match other glyph types:
- Now accepts a reduction function via an
agg=argument likeCanvas.line(),Canvas.points(), etc. The previousdownsample_methodis still accepted for this release, but is now deprecated. upsample_methodis nowinterpolate, acceptinglinear=Trueorlinear=False; the previous spelling is now deprecated.- The
layer=argument previously accepted a 1-based integer index, which was confusing given the standard Python 0-based indexing elsewhere. Changed to accept an xarray coordinate, which can be a 1-based index if that's what is defined on the array, but also works with arbitrary floating-point coordinates (e.g. for a depth parameter in an image stack). - Now auto-ranges in x and y when not given explicit ranges, instead of raising an error.
- Now accepts a reduction function via an
- Fixed various bugs, including one generating incorrect output in
Canvas.raster(agg='mode')
0.6.4
0.6.3
Apart from the new website, this is a minor release primarily to catch up with changes in external libraries.
New features:
- Reorganized examples directory as the basis for a completely new website at https://bokeh.github.io/datashader-docs (#516).
- Added tf.Images() class to format multiple labeled Datashader images as a table in a Jupyter notebook, now used extensively in the new website.
- Added utility function
dataframe_from_multiple_sequences(x_values, y_values)to convert large numbers of sequences stored as 2D numpy arrays to a NaN-separated pandas dataframe that can be displayed efficiently (see new example in tseries.ipynb) (#512). - Improved streaming support (#520).
Bugfixes and compatibility:
- Added support for Dask 0.15 and 0.16 and pandas 0.21 (#523,#529) and declared minimum required Numba version.
- Improved and fixed issues with various example notebooks, primarily to update for changes in dependencies.
- Changes in network graph support: ignore id field by default to avoid surprising dependence on column name, rename directly_connect_edges to connect_edges for accuracy and conciseness.
0.6.2
Release with bugfixes, changes to match external libraries, and some new features.
Backwards compatibility:
- Minor changes to network graph API, e.g. to ignore weights by default in forcelayout2 (#488)
- Fix upper-bound bin error for auto-ranged data (#459). Previously, points falling on the upper bound of the plotted area were excluded from the plot, which was consistent with the behavior for individual grid cells, but which was confusing and misleading for the outer boundaries. Points falling on the very outermost boundaries are now folded into the final grid cell, which should be the least surprising behavior.
New or updated examples (.ipynb files in examples/):
- streaming-aggregation.ipynb: Illustrates combining incoming streams of data for display (also see holoviews streaming).
- landsat.ipynb: simplified using HoloViews; now includes plots of full spectrum for each point via hovering.
- Updated and simplified census-hv-dask (now called census-congressional), census-hv, packet_capture_graph.
New features and improvements
- Updated Bokeh support to work with new bokeh 0.12.10 release (#505)
- More options for network/graph plotting (configurable column names, control over weights usage; #488, #494)
- For lines plots (time series, trajectory, networ graphs), switch line-clipping algorithm from Cohen-Sutherland to Liang-Barsky. The performance gains for random lines range from 50-75% improvement for a million lines. (#495)
- Added
tf.Imagesclass to format a list of images as an HTML table (#492) - Faster resampling/regridding operations (#486)
Known issues:
- examples/dashboard has not yet been updated to match other libraries, and is thus missing functionality like hovering and legends.
- A full website with documentation has been started but is not yet ready for deployment.
0.6.1
Minor bugfix release, primarily updating example notebooks to match API changes in external packages.
Backwards compatibility:
- Made edge bundling retain edge order, to allow indexing, and absolute coordinates, to allow overlaying on external data.
- Updated examples to show that xarray now requires dimension names to match before doing arithmetic or comparisons between arrays.
Known issues:
- If you use Jupyter notebook 5.0 (earlier or later versions should be ok), you will need to override a setting that prevents visualizations from appearing, e.g.:
jupyter notebook --NotebookApp.iopub_data_rate_limit=100000000 census.ipynb & - The dashboard needs to be rewritten entirely to match current Bokeh and HoloViews releases, so that hover and legend support can be restored.
0.6.0
New release of features that may still be in progress, but are already usable:
- Added graph/network plotting support (still may be in flux) (#385, #390, #398, #408, #415, #418, #436)
- Improved raster regridding based on gridtools and xarray (still may be in flux); no longer depends on rasterio and scikit-image (#383, #389, #423)
- Significantly improved performance for dataframes with categorical fields
New examples (.ipynb files in examples/):
- osm-1billion: 1-billion-point OSM example, for in-core processing on a 16GB laptop.
- edge_bundling: Plotting graphs using "edgehammer" bundling of edges to show structure.
- packet_capture_graph: Laying out and visualizing network packets as a graph.
Backwards compatibility:
- Remove deprecated interpolate and colorize functions
- Made raster processing consistently use bin centers to match xarray conventions (requires recent fixes to xarray; only available on a custom channel for now) (#422)
- Fixed various limitations and quirks for NaN values
- Made alpha scaling respect min_alpha consistently (#371)
Known issues:
- If you use Jupyter notebook 5.0 (earlier or later versions should be ok), you will need to override a setting that prevents visualizations from appearing, e.g.:
jupyter notebook --NotebookApp.iopub_data_rate_limit=100000000 census.ipynb & - The dashboard needs updating to match current Bokeh releases; most parts other than hover and legends, should be functional but it needs a rewrite to use currently recommended approaches.
0.5.0
Major release with extensive optimizations and new plotting-library support, incorporating 9 months of development from 5 main contributors:
- Extensive optimizations for speed and memory usage, providing at least 5X improvements in speed (using the latest Numba versions) and 2X improvements in peak memory requirements. Outlined in #313 and #129.
- Added HoloViews support for flexible, composable, dynamic plotting, making it simple to switch between datashaded and non-datashaded versions of a Bokeh or Matplotlib plot.
- Added examples/environment.yml to make it easy to install dependencies needed to run the examples.
- Updated examples to use the now-recommended supported and fast Apache Parquet file format
- Added support for variable alpha for non-categorical aggregates, by specifying a single color rather than a list or colormap #345
- Added datashader.utils.lnglat_to_meters utility function for working in Web Mercator coordinates with Bokeh
- Added discussion of why you should be using uniform colormaps, and examples of using uniform colormaps from the new colorcet package
- Numerous bug fixes and updates, mostly in the examples and Bokeh extension
- Updated reference manual and documentation
New examples (.ipynb files in examples/):
- holoviews_datashader: Using HoloViews to create dynamic Datashader plots easily
- census-hv-dask: Using GeoViews for overlaying shape files, demonstrating gerrymandering by race
- nyc_taxi-paramnb: Using ParamNB to make a simple dashboard
- lidar: Visualizing point clouds
- solar: Visualizing solar radiation data
- Dynamic 1D histogram example (last code cell in examples/nyc_taxi-nongeo.ipynb)
- dashboard: Now includes opensky example (
python dashboard/dashboard.py -c dashboard/opensky.yml)
Backwards compatibility:
- To improve consistency with Numpy and Python data structures and eliminate issues with an empty column and row at the edge of the aggregated raster, the provided xrange,yrange bounds are now treated as upper exclusive. Results will thus differ between 0.5.0 and earlier versions. See #259 for discussion.
Known issues:
- If you use Jupyter notebook 5.0 (earlier or later versions should be ok), you will need to override a setting that prevents visualizations from appearing, e.g.:
jupyter notebook --NotebookApp.iopub_data_rate_limit=100000000 census.ipynb & - Legend and hover support is currently disabled for the dashboard, due to ongoing development of a simpler approach.
0.4.0
Minor bugfix release to support Bokeh 0.12.1, with some API and defaults changes.
- Added
examples()function to obtain the notebooks and other examples corresponding to the installed datashader version; see examples/README.md. - Updated dashboard example to match changes in Bokeh
- Added default color cycle with distinguishable colors for shading categorical data; now
tf.shade(agg)with no other arguments should give a usable plot for both categorical and non-categorical data.
Backwards compatibility:
- Replaced confusing
tf.interpolate()andtf.colorize()functions with a single shading functiontf.shade(). The previous names are still supported, but give deprecation warnings. Calls to the previous functions using keyword arguments can simply be renamed to usetf.shade, as all the same keywords are accepted, but calls tocolorizethat used a positional argument for e.g. thecolor_keywill now need to use a keyword when callingshade(). - Increased default
thresholdfortf.dynspread()to improve visibility of sparse dots - Increased default
min_alphafortf.shade()(formerlytf.colorize()) to avoid undersaturation
Known issues:
- For Bokeh 0.12.1, some notebooks will give warnings for Bokeh plots when used with Jupyter's "Run All" command. Bokeh 0.12.2 will fix this problem when it is released, but for now you can either downgrade to 0.12.0 or use single-cell execution.
- There are some Bokeh compatibility issues with the dashboard example that are still being investigated and may require a new Bokeh or datashader release in this series.
0.3.2
Minor bugfix release to support Bokeh 0.12:
- Fixed InteractiveImage zooming to work with Bokeh 0.12.
- Added more responsive event throttling for DynamicImage;
throttleparameter no longer needed and is now deprecated - Fixed datashader-download-data command
- Improved non-geo Taxi example
- Temporarily disabled dashboard legends; will re-enable in future release
0.3.0
The major feature of this release is support of raster data via Canvas.raster. To use this feature, you must install the optional dependencies via conda install rasterio scikit-image. rasterio relies on gdal, whose conda package has some known bugs, including a missing dependancy for conda install krb5. InteractiveImage in this release requires bokeh 0.11.1 or earlier, and will not work with bokeh 0.12.
- PR #160 #187 Improved example notebooks and dashboard
- PR #186 #184 #178 Add datashader-download-data cli command for grabbing example datasets
- PR #176 #177 Changed census example data to use HDF5 format (slower but more portable)
- PR #156 #173 #174 Added Landsat8 and race/ethnicity vs. elevation example notebooks
- PR #172 #159 #157 #149 Added support for images using
Canvas.raster(requiresrasterioandscikit-image) - PR #169 Added legends notebook demonstrating
create_categorical_legendandcreate_ramp_legend - PR #162 Added notebook example for
datashader.bokeh_ext.HoverLayer - PR #152 Added
alphaarg totf.interpolate - PR #151 #150, etc. Small bugfixes
- PR #146 #145 #144 #143 Added streaming example
- Added
holddecorator to utils,summarize_aggregate_valueshelper function - Added FAQ to docs
Backwards compatibility:
- Removed
memoize_method - Renamed
datashader.callbacks-->datashader.bokeh_ext - Renamed
examples/plotting_problems.ipynb-->examples/plotting_pitfalls.ipynb