From c8ea2d5fc087ef7139868093df9acf144db3ea6c Mon Sep 17 00:00:00 2001 From: Sven Augustin Date: Fri, 11 Jun 2021 17:58:11 +0200 Subject: [PATCH] added tooltips --- kabuki/plots/plot0d.py | 22 +++++++++++++++++++++- kabuki/plots/plot1d.py | 11 ++++++++++- kabuki/plots/plot2d.py | 10 +++++++++- kabuki/utils.py | 4 ++++ 4 files changed, 44 insertions(+), 3 deletions(-) diff --git a/kabuki/plots/plot0d.py b/kabuki/plots/plot0d.py index c144c06..74ba612 100644 --- a/kabuki/plots/plot0d.py +++ b/kabuki/plots/plot0d.py @@ -1,10 +1,24 @@ import numpy as np from bokeh.layouts import row -from bokeh.models import ColumnDataSource +from bokeh.models import ColumnDataSource, HoverTool from bokeh.plotting import figure from ..buki import Object +from ..utils import make_tooltips + + +TOOLTIPS_TIMESERIES = make_tooltips( + x = "$x", + y = "$y", +) + +TOOLTIPS_HISTO = make_tooltips( + x = "$x", + y = "$y", + bin = "@left", + entries = "@top" +) class Plot0D(Object): @@ -41,6 +55,9 @@ class TimeSeries: fig.step(x="x", y="y", source=source, mode="after") fig.circle(x="x", y="y", source=source) + hover = HoverTool(tooltips=TOOLTIPS_TIMESERIES, mode="vline") + fig.add_tools(hover) + def set(self, times, values): data = { @@ -66,6 +83,9 @@ class Histo: self.fig = fig = figure() fig.quad(left="left", right="right", top="top", bottom=0, source=source) + hover = HoverTool(tooltips=TOOLTIPS_HISTO, mode="vline") + fig.add_tools(hover) + def set(self, values): data = hist(values) diff --git a/kabuki/plots/plot1d.py b/kabuki/plots/plot1d.py index 8f8a4de..880262a 100644 --- a/kabuki/plots/plot1d.py +++ b/kabuki/plots/plot1d.py @@ -1,15 +1,21 @@ import numpy as np -from bokeh.models import ColumnDataSource, DataRange1d, Band, Whisker +from bokeh.models import ColumnDataSource, DataRange1d, Band, Whisker, HoverTool from bokeh.palettes import Category10_10 from bokeh.plotting import figure from ..buki import Object +from ..utils import make_tooltips BLUE = Category10_10[0] RED = Category10_10[3] +TOOLTIPS = make_tooltips( + x = "$x", + y = "$y", +) + class Plot1D(Object): @@ -29,6 +35,9 @@ class Plot1D(Object): y_range = DataRange1d(only_visible=True, range_padding=0.5) fig = figure(name=name, y_range=y_range) + hover = HoverTool(tooltips=TOOLTIPS, mode="vline") + fig.add_tools(hover) + self.line_latest, self.circle_latest, self.errband_latest, self.errbars_latest = add_curve(fig, source, "x", "y", "y-std", "y+std", BLUE) self.line_average, self.circle_average, self.errband_average, self.errbars_average = add_curve(fig, source, "x", "avg", "avg-err", "avg+err", RED) diff --git a/kabuki/plots/plot2d.py b/kabuki/plots/plot2d.py index ea9d7ef..38eab7d 100644 --- a/kabuki/plots/plot2d.py +++ b/kabuki/plots/plot2d.py @@ -5,6 +5,14 @@ from bokeh.plotting import figure from ..colormaps import cmaps from ..buki import Object +from ..utils import make_tooltips + + +TOOLTIPS = make_tooltips( + x = "$x", + y = "$y", + z = "@image", +) class Plot2D(Object): @@ -24,7 +32,7 @@ class Plot2D(Object): self._update_cmap() cbar = ColorBar(color_mapper=cmap) - fig = figure(name=name, match_aspect=True) + fig = figure(name=name, match_aspect=True, tooltips=TOOLTIPS) fig.image(source=source, x=0, y=0, dw=1, dh=1, color_mapper=cmap) fig.x_range.range_padding = 0 diff --git a/kabuki/utils.py b/kabuki/utils.py index be18177..925b0b9 100644 --- a/kabuki/utils.py +++ b/kabuki/utils.py @@ -19,4 +19,8 @@ def adjust_margin(obj, top=0, right=0, bottom=0, left=0): obj.margin = [m + d for m, d in zip(obj.margin, delta)] +def make_tooltips(**kwargs): + return list(kwargs.items()) + +