Skip to content

Commit 7d03aa2

Browse files
committed
Set layer automatically from napari window selection
1 parent 8d5397b commit 7d03aa2

File tree

1 file changed

+15
-15
lines changed

1 file changed

+15
-15
lines changed

src/napari_matplotlib/_widget.py

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2,38 +2,38 @@
22
from matplotlib.backends.backend_qt5agg import FigureCanvas
33
from matplotlib.figure import Figure
44
from qtpy.QtWidgets import QComboBox, QVBoxLayout, QWidget
5+
import numpy as np
56

67

78
class ExampleQWidget(QWidget):
89
def __init__(self, napari_viewer: napari.viewer.Viewer):
910
super().__init__()
1011
self.viewer = napari_viewer
11-
12-
self.setLayout(QVBoxLayout())
12+
self.layer = self.viewer.layers[0]
1313

1414
self.canvas = FigureCanvas(Figure(figsize=(5, 3)))
1515
self.axes = self.canvas.figure.subplots()
1616

17-
self.layer_box = QComboBox()
18-
self.layout().addWidget(self.layer_box)
17+
self.setLayout(QVBoxLayout())
1918
self.layout().addWidget(self.canvas)
2019

21-
self.update_layers()
22-
self.hist_current_layer()
23-
2420
self.viewer.dims.events.current_step.connect(self.hist_current_layer)
21+
self.viewer.layers.selection.events.active.connect(self.update_layer)
22+
23+
self.hist_current_layer()
2524

26-
def update_layers(self):
27-
self.layer_box.clear()
28-
names = [layer.name for layer in self.viewer.layers]
29-
self.layer_box.insertItems(0, names)
25+
def update_layer(self, event):
26+
# Update current layer when selection changed in viewer
27+
if event.value:
28+
self.layer = event.value
29+
self.hist_current_layer()
3030

3131
def hist_current_layer(self):
3232
self.axes.clear()
33-
layer_name = self.layer_box.currentText()
34-
layer = self.viewer.layers[layer_name]
33+
layer = self.layer
3534
z = self.viewer.dims.current_step[0]
35+
bins = np.linspace(np.min(layer.data), np.max(layer.data), 100)
3636
data = layer.data[z]
37-
self.axes.hist(data.ravel(), bins="auto")
38-
self.axes.set_title(f"{layer_name}, z={z}")
37+
self.axes.hist(data.ravel(), bins=bins)
38+
self.axes.set_title(f"{layer.name}, z={z}")
3939
self.canvas.draw()

0 commit comments

Comments
 (0)