Skip to content

Commit ae9f06b

Browse files
committed
create RangeSlider widget
1 parent 74d6145 commit ae9f06b

File tree

5 files changed

+410
-51
lines changed

5 files changed

+410
-51
lines changed

.flake8

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -284,4 +284,5 @@ per-file-ignores =
284284
examples/userdemo/connectionstyle_demo.py: E402
285285
examples/userdemo/custom_boxstyle01.py: E402
286286
examples/userdemo/pgf_preamble_sgskip.py: E402
287+
examples/widgets/range_slider.py: E402
287288
examples/widgets/textbox.py: E402
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
New RangeSlider widget
2+
----------------------
3+
`.widgets.RangeSlider` allows for creating a slider that defines
4+
a range rather than a single value.

examples/widgets/range_slider.py

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
"""
2+
======================================
3+
Thresholding an Image with RangeSlider
4+
======================================
5+
6+
Using the RangeSlider widget to control the thresholding of an image.
7+
"""
8+
9+
import numpy as np
10+
import matplotlib.pyplot as plt
11+
from matplotlib.widgets import RangeSlider
12+
13+
fig, ax = plt.subplots()
14+
plt.subplots_adjust(left=0.25, bottom=0.25)
15+
np.random.seed(19680801)
16+
N = 128
17+
im = ax.imshow(np.random.rand(N * N).reshape(N, N))
18+
19+
slider_ax = plt.axes([0.20, 0.1, 0.60, 0.03])
20+
slider = RangeSlider(slider_ax, "Threshold", 0.0, 1.0)
21+
22+
23+
def update(val):
24+
im.norm.vmin = val[0]
25+
im.norm.vmax = val[1]
26+
fig.canvas.draw_idle()
27+
28+
29+
slider.on_changed(update)
30+
plt.show()
31+
32+
#############################################################################
33+
#
34+
# ------------
35+
#
36+
# References
37+
# """"""""""
38+
#
39+
# The use of the following functions, methods, classes and modules is shown
40+
# in this example:
41+
42+
import matplotlib
43+
matplotlib.widgets.RangeSlider

lib/matplotlib/tests/test_widgets.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -287,6 +287,21 @@ def test_slider_horizontal_vertical():
287287
assert_allclose(box.bounds, [0, 0, 1, 10/24])
288288

289289

290+
def test_range_slider():
291+
fig, ax = plt.subplots()
292+
293+
slider = widgets.RangeSlider(ax=ax, label='', valmin=0., valmax=1.)
294+
295+
slider.set_val((.2, .6))
296+
assert_allclose(slider.val, (.2, .6))
297+
298+
slider.set_val((.2, .1))
299+
assert_allclose(slider.val, (.1, .2))
300+
301+
slider.set_val((-1, 10))
302+
assert_allclose(slider.val, (0, 1))
303+
304+
290305
def check_polygon_selector(event_sequence, expected_result, selections_count):
291306
"""
292307
Helper function to test Polygon Selector.

0 commit comments

Comments
 (0)