Currently all plots (and live plots) are done using holoviews. There are some points where this could be improved.
The 2D learner (and possibly the 1D leaner too) works with functions that return a vector of values. However when calling the plot method it will only plot (and live plot) the first element of this array even though all are present in learner.data
There is no colorbar to quantify what z-value that was extracted.
There are no sensible labels and units added to the axes, it may be possible to optionally specify this to the learners.
Below is an image of a leaner that
uses a function that returns a vector
should have labels and units on the x-axis
has no colorbar
Designs
Child items ...
Show closed items
Linked items 0
Link issues together to show that they're related.
Learn more.
I tried that command ( googled around holoviews myself) but it messes up the aspect ratio of the image. In the example dataset I show, the y-axis goes from 0 to .5 while the x-axis (which is in degrees) goes from 10 to 100. As there is an order of magnitude difference between the quantities (and even more if I put values in 1e9 Hz on the x-axis). This can be solved in the matplotlib using the aspect keyword (only found that out today), however I think it makes sense to default to the auto aspect for adapative as well. The reason is that in the interpolation, everything is rescaled to threat both the x and y range on equal footing, it makes sense to have the default plotting behave in the same way.
learner.plot().redim(x='your_blabla_axis',y='this is the new y')
Thanks, I was not familiar with the redim method. Would be cool if it was also unit aware (e.g. converting Hz to GHz/MHz when appropriate) but I understand that is on the holoviews roadmap.
However rather than adding this each time I specify a plot method, I think it makes sense to pass this to the learner or make the learner extract this from the passed function/object in some way. As we are not redimensioning the data in the holomap but it is a unit/label that was always there.
How would you like to plot a vector?
I would like to plot them as independent quantities.
For our experiments (and also some simulations I am doing now), it is common to extract multiple quantities of interest for each datapoint that is measured/simulated. As such I would like to plot them as independent quantities e.g. hm = hm_0 + hm_1.
I tried that command ( googled around holoviews myself) but it messes up the aspect ratio of the image. In the example dataset I show, the y-axis goes from 0 to .5 while the x-axis (which is in degrees) goes from 10 to 100. As there is an order of magnitude difference between the quantities (and even more if I put values in 1e9 Hz on the x-axis). This can be solved in the matplotlib using the aspect keyword (only found that out today), however I think it makes sense to default to the auto aspect for adapative as well. The reason is that in the interpolation, everything is rescaled to threat both the x and y range on equal footing, it makes sense to have the default plotting behave in the same way.
I actually think the aspect ratios problem that you are having is a HoloViews bug, I've seen it before. I will report it to the developers.
I would like to plot them as independent quantities.
For our experiments (and also some simulations I am doing now), it is common to extract multiple quantities of interest for each datapoint that is measured/simulated. As such I would like to plot them as independent quantities e.g. hm = hm_0 + hm_1.
I could extend the plotting function to return a holoviews.HoloMap (which returns the plot with a slider), then you could simply call the object like learner.plot().layout() and it will all show up in subplots.
I think it makes sense to pass this to the learner or make the learner extract this from the passed function/object in some way.
IMO the only solution would be to have these as parameters to plot. I would like to have the learners concentrate solely on learning, rather than carrying around a bunch of metadata too.
I would like to plot them as independent quantities.
For our experiments (and also some simulations I am doing now), it is common to extract multiple quantities of interest for each datapoint that is measured/simulated. As such I would like to plot them as independent quantities e.g. hm = hm_0 + hm_1.
I could equally well imagine that one could want to plot a vector field. IMO there is probably not a single sensible default.
We could consider providing alternative plotting functions that work with the various learners.