hvplot
hvplot copied to clipboard
Odd behavior with invert_yaxis, invert_xaxis
ALL software version info
(this library, plus any other relevant software, e.g. bokeh, python, notebook, OS, browser, etc)
panel: 0.12.4
param: 1.12.0
jupyterlab: 3.0.16
holoviews: 1.14.7
hvplot: 0.7.2
bokeh: 2.4.2
Description of expected behavior and the observed behavior
Expected:
- that the image hvplot would invert y and x axis when triggered
- inverting the axis would not affect view of plot
Observed:
- image plot disappears when either x or y axis is inverted
- view of both plots continually zooms in each time the axis is inverted
Complete, minimal, self-contained example code that reproduces the issue
import holoviews as hv
import panel as pn
import param
import numpy as np
import hvplot.xarray
import xarray as xr
hv.extension('bokeh', logo=False)
data = xr.tutorial.open_dataset('air_temperature').air
class Viewer(param.Parameterized):
tabs_switch = param.Boolean(True, label="Toggle Tabs")
cmap = param.Selector(objects=["rainbow", "fire", "bwr"])
invert_yaxis = pn.widgets.Checkbox(value=False, name='Invert y axis')
invert_xaxis = pn.widgets.Checkbox(value=False, name='Invert x axis')
def __init__(self, **params):
super().__init__(**params)
self.opts = dict(cmap=self.param.cmap, invert_yaxis=self.invert_yaxis, invert_xaxis=self.invert_xaxis, padding=0,
height=800, width=800)
self.plot = pn.pane.HoloViews()
self.make_layout()
self.column = pn.Column(
pn.WidgetBox(pn.Param(self.param, parameters=["tabs_switch", "cmap"]), self.invert_yaxis, self.invert_xaxis),
self.plot
)
def create_image(self):
x, y = np.mgrid[-50:51, -50:51] * 0.05
img = data.hvplot(x='lon', y='lat').opts(colorbar=True)
return img
def create_contours(self):
img = self.create_image()
contours = hv.operation.contours(img, levels=10, filled=True)
return contours
@param.depends("tabs_switch", watch=True)
def make_layout(self):
image = self.create_image()
contours = self.create_contours()
self.plot.object = hv.Layout(image.apply.opts(**self.opts) +\
contours.apply.opts(**self.opts)).opts(tabs=self.tabs_switch)
v = Viewer()
se = pn.serve(v.column)
Screenshots or screencasts of the bug in action
https://user-images.githubusercontent.com/71399442/154738786-650043a9-a525-4421-9503-0cfe6c2f57b8.mov
Appears to be a bug to me. Thanks
It looks like a bug, we need to investigate this further. Thanks!
For some context on this - I am running into the same thing. The image doesn't necessarily disappear, but actually shifts the image instead of flipping it: