nocollier / VulnerableEcosystems

0 stars 0 forks source link

Parameter Isoplane / Map Visualization #2

Open nocollier opened 3 years ago

nocollier commented 3 years ago

I have been playing around with the Dash/Plotly plotting libraries. Plotly is what I have used in our previous LDRD and in RUBISCO to make interactive visualizations. The dash framework is from the same company and is built to allow you to create custom interactive webpages with abstract elements which could be headings, text boxes, buttons, or even plotly plot objects. They also provide a fairly comprehensive callback feature which allows you to update anything on your webpage, when other elements are changed/clicked/mouseovered/selected.

Bottom line: this technology allows us to have multiple scatter plots (say, isoplanes of a cluster parameter space) and then link selections across each plot. This is what the demo script visualization/parameter_space.py does (it also uses ILAMB to do some processing and would require the model data to run). I have also have clickable/selectable global maps working in this framework in the context of some work for RUBISCO/ILAMB.

A few questions stand out in my mind:

  1. Is this a good technology to use? I am comfortable saying that it is rich enough to do what we need in terms of features.
  2. Are there better alternatives? I know @jitendra-kumar showed a representativeness plot on a webpage but I forget what he used, maybe leaflet?
  3. Can we make this work in production? The framework serves up webpages as Flask apps. So you write your code entirely in python, and then once running you open a port on your localhost to see the webpage. I am unclear on what is needed on the server side.
nocollier commented 3 years ago

As per our meeting, we could also look at Holoviews or Geoviews. Jitu has worked with Leaflet as well, but that was more geared for creating tiles for multiple zoom levels when the dataset is very high resolution.

With regard to how to serve up these pages (not static html), will ask Sarat for help.