Personal opinions about best practices for Panel + HoloViews

I have been struggling setting opts such as line_color or other more niche options while overlaying geofeatures and other plots

You can target specific elements: Overlay([hv_obj1, hv_obj2]).opts("Curve", line_color="red")


Collecting more best practices things here:

  • Generally, try to replace HoloViews usage with hvPlot. At a certain point of complexity, such as with the use of ‘.select’, it might be better to stick with HoloViews.
  • Almost always, try to replace the use of datashade with rasterize (read this page). Essentially, rasterize allows Bokeh to handle the colormapping instead of Datashader.
  • Remove all pn.interact usage
  • Try to avoid .param.watch() usage. This is pretty low-level and verbose approach Prefer using pn.bind(). Read this page for explanation.
  • For apps built using a class approach, when they create a view() method and call it directly, update the class by inheriting from pn.viewable.Viewer and replace view() by __panel__(). Here is an example.
3 Likes