Skip to content

Commit bae13a2

Browse files
committed
add toggle scale on double click
1 parent dd61e27 commit bae13a2

File tree

2 files changed

+18
-3
lines changed

2 files changed

+18
-3
lines changed

src/matplotgl/axes.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,13 +109,19 @@ def __init__(self, *, ax: MplAxes, figure=None) -> None:
109109
# self._margin_with_ticks = 50
110110
self._thin_margin = 3
111111

112+
tooltips = {
113+
"leftspine": "Double-click to toggle y-scale",
114+
"bottomspine": "Double-click to toggle x-scale",
115+
}
116+
112117
self._margins = {
113118
name: ClickableHTML(
114119
layout={
115120
"grid_area": name,
116121
"padding": "0",
117122
"margin": "0",
118123
},
124+
tooltip=tooltips.get(name, ""),
119125
)
120126
for name in (
121127
"leftspine",
@@ -146,6 +152,9 @@ def __init__(self, *, ax: MplAxes, figure=None) -> None:
146152
if figure is not None:
147153
self.set_figure(figure)
148154

155+
self._margins['leftspine'].on_dblclick(self._toggle_yscale)
156+
self._margins['bottomspine'].on_dblclick(self._toggle_xscale)
157+
149158
super().__init__(
150159
children=[
151160
*self._margins.values(),
@@ -487,6 +496,12 @@ def set_yscale(self, scale):
487496
self.autoscale()
488497
self._make_yticks()
489498

499+
def _toggle_xscale(self, _):
500+
self.set_xscale("log" if self.get_xscale() == "linear" else "linear")
501+
502+
def _toggle_yscale(self, _):
503+
self.set_yscale("log" if self.get_yscale() == "linear" else "linear")
504+
490505
def zoom(self, box):
491506
self._zoom_limits = {
492507
"xmin": box[0],

src/matplotgl/widgets.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -118,8 +118,8 @@ class ClickableHTML(anywidget.AnyWidget):
118118
tooltip_text = traitlets.Unicode("").tag(sync=True)
119119
_dblclick_trigger = traitlets.Int(0).tag(sync=True)
120120

121-
def __init__(self, value="", tooltip="", on_dblclick=None, **kwargs):
121+
def __init__(self, value="", tooltip="", **kwargs):
122122
super().__init__(value=value, tooltip_text=tooltip, **kwargs)
123123

124-
if on_dblclick:
125-
self.observe(lambda change: on_dblclick(self), "_dblclick_trigger")
124+
def on_dblclick(self, on_dblclick):
125+
self.observe(lambda change: on_dblclick(self), "_dblclick_trigger")

0 commit comments

Comments
 (0)