Skip to content

Commit 4385d53

Browse files
committed
widget example improvements by M. Michler, patch 2944605
svn path=/trunk/matplotlib/; revision=8362
1 parent 0c9d450 commit 4385d53

File tree

5 files changed

+85
-70
lines changed

5 files changed

+85
-70
lines changed

examples/widgets/buttons.py

Lines changed: 18 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,38 +1,40 @@
1-
from pylab import *
1+
2+
import numpy as np
3+
import matplotlib.pyplot as plt
24
from matplotlib.widgets import Button
35

4-
freqs = arange(2,20,3)
6+
freqs = np.arange(2, 20, 3)
57

6-
ax = subplot(111)
7-
subplots_adjust(bottom=0.2)
8-
t = arange(0.0, 1.0, 0.001)
9-
s = sin(2*pi*freqs[0]*t)
10-
l, = plot(t,s, lw=2)
8+
ax = plt.subplot(111)
9+
plt.subplots_adjust(bottom=0.2)
10+
t = np.arange(0.0, 1.0, 0.001)
11+
s = np.sin(2*np.pi*freqs[0]*t)
12+
l, = plt.plot(t, s, lw=2)
1113

1214

1315
class Index:
1416
ind = 0
1517
def next(self, event):
1618
self.ind += 1
17-
i = self.ind%len(freqs)
18-
ydata = sin(2*pi*freqs[i]*t)
19+
i = self.ind % len(freqs)
20+
ydata = np.sin(2*np.pi*freqs[i]*t)
1921
l.set_ydata(ydata)
20-
draw()
22+
plt.draw()
2123

2224
def prev(self, event):
2325
self.ind -= 1
24-
i = self.ind%len(freqs)
25-
ydata = sin(2*pi*freqs[i]*t)
26+
i = self.ind % len(freqs)
27+
ydata = np.sin(2*np.pi*freqs[i]*t)
2628
l.set_ydata(ydata)
27-
draw()
29+
plt.draw()
2830

2931
callback = Index()
30-
axprev = axes([0.7, 0.05, 0.1, 0.075])
31-
axnext = axes([0.81, 0.05, 0.1, 0.075])
32+
axprev = plt.axes([0.7, 0.05, 0.1, 0.075])
33+
axnext = plt.axes([0.81, 0.05, 0.1, 0.075])
3234
bnext = Button(axnext, 'Next')
3335
bnext.on_clicked(callback.next)
3436
bprev = Button(axprev, 'Previous')
3537
bprev.on_clicked(callback.prev)
3638

37-
show()
39+
plt.show()
3840

examples/widgets/check_buttons.py

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,26 @@
1-
from pylab import *
1+
import numpy as np
2+
import matplotlib.pyplot as plt
23
from matplotlib.widgets import CheckButtons
34

4-
t = arange(0.0, 2.0, 0.01)
5-
s0 = sin(2*pi*t)
6-
s1 = sin(4*pi*t)
7-
s2 = sin(6*pi*t)
5+
t = np.arange(0.0, 2.0, 0.01)
6+
s0 = np.sin(2*np.pi*t)
7+
s1 = np.sin(4*np.pi*t)
8+
s2 = np.sin(6*np.pi*t)
89

9-
ax = subplot(111)
10+
ax = plt.subplot(111)
1011
l0, = ax.plot(t, s0, visible=False, lw=2)
1112
l1, = ax.plot(t, s1, lw=2)
1213
l2, = ax.plot(t, s2, lw=2)
13-
subplots_adjust(left=0.2)
14+
plt.subplots_adjust(left=0.2)
1415

15-
rax = axes([0.05, 0.4, 0.1, 0.15])
16+
rax = plt.axes([0.05, 0.4, 0.1, 0.15])
1617
check = CheckButtons(rax, ('2 Hz', '4 Hz', '6 Hz'), (False, True, True))
1718

1819
def func(label):
19-
if label=='2 Hz': l0.set_visible(not l0.get_visible())
20-
elif label=='4 Hz': l1.set_visible(not l1.get_visible())
21-
elif label=='6 Hz': l2.set_visible(not l2.get_visible())
22-
draw()
20+
if label == '2 Hz': l0.set_visible(not l0.get_visible())
21+
elif label == '4 Hz': l1.set_visible(not l1.get_visible())
22+
elif label == '6 Hz': l2.set_visible(not l2.get_visible())
23+
plt.draw()
2324
check.on_clicked(func)
2425

25-
show()
26+
plt.show()

examples/widgets/cursor.py

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,19 @@
11
#!/usr/bin/env python
22

33
from matplotlib.widgets import Cursor
4-
import pylab
4+
import numpy as np
5+
import matplotlib.pyplot as plt
56

67

7-
fig = pylab.figure(figsize=(8,6))
8-
ax = fig.add_axes([0.075, 0.25, 0.9, 0.725], axisbg='#FFFFCC')
9-
#ax = fig.add_subplot(111, axisbg='#FFFFCC')
10-
canvas = ax.figure.canvas
8+
fig = plt.figure(figsize=(8, 6))
9+
ax = fig.add_subplot(111, axisbg='#FFFFCC')
1110

12-
x,y = 4*(pylab.rand(2,100)-.5)
13-
ax.plot(x,y,'o')
14-
ax.set_xlim(-2,2)
15-
ax.set_ylim(-2,2)
11+
x, y = 4*(np.random.rand(2, 100)-.5)
12+
ax.plot(x, y, 'o')
13+
ax.set_xlim(-2, 2)
14+
ax.set_ylim(-2, 2)
1615

1716
# set useblit = True on gtkagg for enhanced performance
1817
cursor = Cursor(ax, useblit=True, color='red', linewidth=2 )
1918

20-
pylab.show()
19+
plt.show()

examples/widgets/menu.py

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@
99

1010

1111
class ItemProperties:
12-
def __init__(self, fontsize=14, labelcolor='black', bgcolor='yellow', alpha=1.0):
12+
def __init__(self, fontsize=14, labelcolor='black', bgcolor='yellow',
13+
alpha=1.0):
1314
self.fontsize = fontsize
1415
self.labelcolor = labelcolor
1516
self.bgcolor = bgcolor
@@ -21,8 +22,9 @@ def __init__(self, fontsize=14, labelcolor='black', bgcolor='yellow', alpha=1.0)
2122
class MenuItem(artist.Artist):
2223
parser = mathtext.MathTextParser("Bitmap")
2324
padx = 5
24-
pady =5
25-
def __init__(self, fig, labelstr, props=None, hoverprops=None, on_select=None):
25+
pady = 5
26+
def __init__(self, fig, labelstr, props=None, hoverprops=None,
27+
on_select=None):
2628
artist.Artist.__init__(self)
2729

2830
self.set_figure(fig)
@@ -44,14 +46,15 @@ def __init__(self, fig, labelstr, props=None, hoverprops=None, on_select=None):
4446
labelstr, fontsize=props.fontsize, dpi=fig.dpi)
4547

4648
if props.fontsize!=hoverprops.fontsize:
47-
raise NotImplementedError('support for different font sizes not implemented')
49+
raise NotImplementedError(
50+
'support for different font sizes not implemented')
4851

4952

5053
self.labelwidth = x.shape[1]
5154
self.labelheight = x.shape[0]
5255

5356
self.labelArray = np.zeros((x.shape[0], x.shape[1], 4))
54-
self.labelArray[:,:,-1] = x/255.
57+
self.labelArray[:, :, -1] = x/255.
5558

5659
self.label = image.FigureImage(fig, origin='upper')
5760
self.label.set_array(self.labelArray)
@@ -95,9 +98,9 @@ def set_hover_props(self, b):
9598
props = self.props
9699

97100
r, g, b = props.labelcolor_rgb
98-
self.labelArray[:,:,0] = r
99-
self.labelArray[:,:,1] = g
100-
self.labelArray[:,:,2] = b
101+
self.labelArray[:, :, 0] = r
102+
self.labelArray[:, :, 1] = g
103+
self.labelArray[:, :, 2] = b
101104
self.label.set_array(self.labelArray)
102105
self.rect.set(facecolor=props.bgcolor, alpha=props.alpha)
103106

@@ -169,12 +172,9 @@ def on_move(self, event):
169172
for label in ('open', 'close', 'save', 'save as', 'quit'):
170173
def on_select(item):
171174
print 'you selected', item.labelstr
172-
item = MenuItem(fig, label, props=props, hoverprops=hoverprops, on_select=on_select)
175+
item = MenuItem(fig, label, props=props, hoverprops=hoverprops,
176+
on_select=on_select)
173177
menuitems.append(item)
174178

175179
menu = Menu(fig, menuitems)
176180
plt.show()
177-
178-
179-
180-

examples/widgets/rectangle_selector.py

Lines changed: 31 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -8,28 +8,41 @@
88
99
"""
1010
from matplotlib.widgets import RectangleSelector
11-
from pylab import subplot, arange, plot, sin, cos, pi, show
12-
def line_select_callback(event1, event2):
13-
'event1 and event2 are the press and release events'
14-
x1, y1 = event1.xdata, event1.ydata
15-
x2, y2 = event2.xdata, event2.ydata
16-
print "(%3.2f, %3.2f) --> (%3.2f, %3.2f)"%(x1,y1,x2,y2)
17-
print " The button you used were: ",event1.button, event2.button
11+
import numpy as np
12+
import matplotlib.pyplot as plt
1813

14+
def line_select_callback(eclick, erelease):
15+
'eclick and erelease are the press and release events'
16+
x1, y1 = eclick.xdata, eclick.ydata
17+
x2, y2 = erelease.xdata, erelease.ydata
18+
print "(%3.2f, %3.2f) --> (%3.2f, %3.2f)" % (x1, y1, x2, y2)
19+
print " The button you used were: ", eclick.button, erelease.button
1920

20-
current_ax=subplot(111) # make a new plotingrange
21-
N=100000 # If N is large one can see improvement
22-
x=10.0*arange(N)/(N-1) # by use blitting!
21+
def toggle_selector(event):
22+
print ' Key pressed.'
23+
if event.key in ['Q', 'q'] and toggle_selector.RS.active:
24+
print ' RectangleSelector deactivated.'
25+
toggle_selector.RS.set_active(False)
26+
if event.key in ['A', 'a'] and not toggle_selector.RS.active:
27+
print ' RectangleSelector activated.'
28+
toggle_selector.RS.set_active(True)
2329

24-
plot(x,sin(.2*pi*x),lw=3,c='b',alpha=.7) # plot something
25-
plot(x,cos(.2*pi*x),lw=3.5,c='r',alpha=.5)
26-
plot(x,-sin(.2*pi*x),lw=3.5,c='g',alpha=.3)
30+
31+
current_ax = plt.subplot(111) # make a new plotingrange
32+
N = 100000 # If N is large one can see
33+
x = np.linspace(0.0, 10.0, N) # improvement by use blitting!
34+
35+
plt.plot(x, +np.sin(.2*np.pi*x), lw=3.5, c='b', alpha=.7) # plot something
36+
plt.plot(x, +np.cos(.2*np.pi*x), lw=3.5, c='r', alpha=.5)
37+
plt.plot(x, -np.sin(.2*np.pi*x), lw=3.5, c='g', alpha=.3)
2738

2839
print "\n click --> release"
2940

3041
# drawtype is 'box' or 'line' or 'none'
31-
LS = RectangleSelector(current_ax, line_select_callback,
32-
drawtype='box',useblit=True,
33-
button = [1, 3], # don't use center mouse button
34-
minspanx=5,minspany=5,spancoords='pixels')
35-
show()
42+
toggle_selector.RS = RectangleSelector(current_ax, line_select_callback,
43+
drawtype='box', useblit=True,
44+
button=[1,3], # don't use middle button
45+
minspanx=5, minspany=5,
46+
spancoords='pixels')
47+
plt.connect('key_press_event', toggle_selector)
48+
plt.show()

0 commit comments

Comments
 (0)