Skip to content
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 23 additions & 0 deletions fastplotlib/tools/_histogram_lut.py
Original file line number Diff line number Diff line change
Expand Up @@ -133,6 +133,8 @@ def __init__(

self.image_graphic.add_event_handler(self._image_cmap_handler, *ig_events)

self.ruler = None

# colorbar for grayscale images
if self.image_graphic.data.value.ndim != 3:
self._colorbar: ImageGraphic = self._make_colorbar(edges_flanked)
Expand Down Expand Up @@ -169,6 +171,22 @@ def _make_colorbar(self, edges_flanked) -> ImageGraphic:
cbar.world_object.world.scale_x = 20
self._cmap = self.image_graphic.cmap

# make ruler
start, stop = self.vmin, self.vmax
step = np.ptp([start, stop]) / 10
self.ruler = pygfx.Ruler(
tick_side="left",
start_pos=(0, start, -100),
end_pos=(0, stop, -100),
ticks=np.arange(start, stop + step, step),
tick_format=lambda v, _, __: str(v),
)

cbar.world_object.add(self.ruler)
self.ruler.local.x = -0.5
self.ruler.local.y = -edges_flanked[0]
self.ruler.ticks_at_end_points = True

return cbar

def _get_vmin_vmax_str(self) -> tuple[str, str]:
Expand All @@ -189,6 +207,11 @@ def _fpl_add_plot_area_hook(self, plot_area):
self._linear_region_selector._fpl_add_plot_area_hook(plot_area)
self._histogram_line._fpl_add_plot_area_hook(plot_area)

if self.ruler is not None:
self.ruler.update(self._plot_area.camera, self._plot_area.viewport.logical_size)

# TODO: need to figure out how to get a real bbox for text objects in screen space
# so that we can autoscale properly
self._plot_area.auto_scale()
self._plot_area.controller.enabled = True

Expand Down