Skip to content

Commit 36eaa1c

Browse files
stfnrpplngrlarsoner
authored andcommitted
ENH Keyboard functionality for interactive colorbar (mne-tools#6857)
* Update .gitignore * Add self-generated cmap to mappable * Added keyboard functionality to interactive colorbar * Update latest.inc
1 parent 474e1ab commit 36eaa1c

File tree

4 files changed

+29
-1
lines changed

4 files changed

+29
-1
lines changed

.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -79,3 +79,4 @@ cover
7979

8080
.venv/
8181
venv/
82+
*.json

doc/changes/latest.inc

+3-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,9 @@ Changelog
1616
~~~~~~~~~
1717

1818
- Add support for plotting fNIRS channels in :func:`mne.viz.plot_alignment` by `Eric Larson`_
19-
19+
20+
- Add keyboard functionality to interactive colorbar plotting TFRs by `Stefan Repplinger`_
21+
2022
- Add the ability to ``return_event_id`` in :func:`mne.read_events` for use with MNE-C produced ``-annot.fif`` files, by `Eric Larson`_
2123

2224
- Add reader for NIRx data in :func:`mne.io.read_raw_nirx` by `Robert Luke`_

mne/time_frequency/tests/test_tfr.py

+8
Original file line numberDiff line numberDiff line change
@@ -493,6 +493,14 @@ def test_plot():
493493
fig.canvas.key_press_event('up')
494494
fig.canvas.key_press_event(' ')
495495
fig.canvas.key_press_event('down')
496+
fig.canvas.key_press_event(' ')
497+
fig.canvas.key_press_event('+')
498+
fig.canvas.key_press_event(' ')
499+
fig.canvas.key_press_event('-')
500+
fig.canvas.key_press_event(' ')
501+
fig.canvas.key_press_event('pageup')
502+
fig.canvas.key_press_event(' ')
503+
fig.canvas.key_press_event('pagedown')
496504

497505
cbar = fig.get_axes()[0].CB # Fake dragging with mouse.
498506
ax = cbar.cbar.ax

mne/viz/utils.py

+17
Original file line numberDiff line numberDiff line change
@@ -1891,6 +1891,7 @@ def __init__(self, cbar, mappable):
18911891
self.press = None
18921892
self.cycle = sorted([i for i in dir(plt.cm) if
18931893
hasattr(getattr(plt.cm, i), 'N')])
1894+
self.cycle += [mappable.get_cmap().name]
18941895
self.index = self.cycle.index(mappable.get_cmap().name)
18951896
self.lims = (self.cbar.norm.vmin, self.cbar.norm.vmax)
18961897
self.connect()
@@ -1916,13 +1917,28 @@ def on_press(self, event):
19161917

19171918
def key_press(self, event):
19181919
"""Handle key press."""
1920+
# print(event.key)
1921+
scale = self.cbar.norm.vmax - self.cbar.norm.vmin
1922+
perc = 0.03
19191923
if event.key == 'down':
19201924
self.index += 1
19211925
elif event.key == 'up':
19221926
self.index -= 1
19231927
elif event.key == ' ': # space key resets scale
19241928
self.cbar.norm.vmin = self.lims[0]
19251929
self.cbar.norm.vmax = self.lims[1]
1930+
elif event.key == '+':
1931+
self.cbar.norm.vmin -= (perc * scale) * -1
1932+
self.cbar.norm.vmax += (perc * scale) * -1
1933+
elif event.key == '-':
1934+
self.cbar.norm.vmin -= (perc * scale) * 1
1935+
self.cbar.norm.vmax += (perc * scale) * 1
1936+
elif event.key == 'pageup':
1937+
self.cbar.norm.vmin -= (perc * scale) * 1
1938+
self.cbar.norm.vmax -= (perc * scale) * 1
1939+
elif event.key == 'pagedown':
1940+
self.cbar.norm.vmin -= (perc * scale) * -1
1941+
self.cbar.norm.vmax -= (perc * scale) * -1
19261942
else:
19271943
return
19281944
if self.index < 0:
@@ -1933,6 +1949,7 @@ def key_press(self, event):
19331949
self.cbar.set_cmap(cmap)
19341950
self.cbar.draw_all()
19351951
self.mappable.set_cmap(cmap)
1952+
self.mappable.set_norm(self.cbar.norm)
19361953
self.cbar.patch.figure.canvas.draw()
19371954

19381955
def on_motion(self, event):

0 commit comments

Comments
 (0)