holoviz / hvplot

A high-level plotting API for pandas, dask, xarray, and networkx built on HoloViews
https://hvplot.holoviz.org
BSD 3-Clause "New" or "Revised" License
1.07k stars 104 forks source link

hvPlot Explorer issues #1190

Open ahuang11 opened 10 months ago

ahuang11 commented 10 months ago

These things make the explorer unintuitive to use:

Minor

Medium

Major

TBD

Discussion needed

Out of scope in hvPlot

Credits to @jbednar for discovering these.

jbednar commented 10 months ago

For reference, I was able to demonstrate each of these issues using this code on a machine without Cartopy installed (i.e., an environment with hvPlot but without GeoViews):

import hvplot.xarray, xarray as xr, holoviews as hv
hv.extension("bokeh", width=100)

ds = xr.tutorial.open_dataset('air_temperature').load()

hvplot.explorer(ds, x="lon", y="lat")
image

Notice the small size of the plot relative to the page width, which is why the horizontal placement of the HoloMap/DynamicMap widgets is a problem. For different zoom levels and browser widths the issue gets much worse; I think we really need to be reserving much more of the screen real estate for the plot:

image
maximlt commented 10 months ago

General comment on naming things, I definitely want the name of the parameters passed to hvplot.<method> appear in the explorer as I strongly believe the explorer is a good way to discover and learn hvPlot's (and Pandas' to some extent) API. It's for example the best way to understand the difference between by and groupby, just by playing around with the options. So their actual names must be shown in the UI.

Two time(s) in the fields list: 'time' and "['time']"

I've seen this issue with a dev release of Param, just make sure to reproduce it with Param 2.0.

jbednar commented 10 months ago

So their actual names must be shown in the UI.

I believe there is an open issue about the name of "by" vs "groupby", and I agree that changes in the Explorer should be coordinated with changes in the API. I continue to find the naming of those two options highly confusing.

maximlt commented 10 months ago

I think this is the issue you're referring to: https://github.com/holoviz/hvplot/issues/157.

Note that I just referred to by and groupby as an example, my comment applies to all the parameters exposed by the explorer.

ahuang11 commented 10 months ago

I definitely want the name of the parameters passed to hvplot. appear in the explorer as I strongly believe the explorer is a good way to discover and learn hvPlot's

Perhaps we can keep the original parameter names by using label like:

"Colorbar Limit (clim)"

maximlt commented 10 months ago

Yes that works for me!

ahuang11 commented 10 months ago

After trying to add framewise, I realize it may not be ideal for explorer because it requires dynamic=False and if there's 2320 frames in the plot, it takes a while to load.

I also discovered that axiswise is not implemented as a kwarg i.e. .hvplot(axiswise=True) is invalid.

ahuang11 commented 10 months ago

Regarding:

  • [ ] Infer color label from dataset (right now colorbar has no text label even though the dataset declares that dimension; explicitly filling in "Temp" works on clabel)

It seems that HoloViews doesn't automatically label colorbar so I think that's an issue for HoloViews: https://github.com/holoviz/holoviews/issues/5982

import hvplot.xarray
import xarray as xr
import holoviews as hv
hv.extension("bokeh")

ds = xr.tutorial.open_dataset("air_temperature").isel(time=0)
hv.Image(ds, ["lon", "lat"], ["air"]).opts(colorbar=True).redim.label(lat="Latitude", lon="Longitude", air="Air Temperature")
image
ahuang11 commented 10 months ago
  • [ ] Bokeh invalid tooltip (e.g. for "HoloViews .opts()" under Advanced, the tooltip disappears permanently after entering invalid input

I believe this is a Panel issue: https://github.com/holoviz/panel/issues/5857

import param
import panel as pn
pn.extension()

class Test(param.Parameterized):

    d = param.Dict(doc="This should not disappear")

pn.Param(Test)