In [13]:
import matplotlib.pyplot as plt
import numpy as np
%matplotlib


Using matplotlib backend: MacOSX

In [62]:
tp = [('sepalL','f8'),('sepalW','f8'),('petalL','f8'),('petalW','f8'),('species','S10')]
flower_data = np.loadtxt(open('flowers.csv','rb'),dtype=tp, skiprows=1, delimiter=',')
ctable = dict(setosa = 'r', versicolor = 'g', virginica = 'b')
carray = [ctable[x] for x in flower_data['species'] ]

In [108]:



release
release
release
release
release
release
release

In [83]:
fig = plt.figure()
ax = fig.add_subplot(111)
rects = ax.bar(range(10), 20*np.random.rand(10))
drs = []

In [157]:
import pdb

In [169]:
class BrushingRectangle:
    def __init__(self):
        self.press = None
        self.ax = plt.gca()
        self.cidpresss = self.ax.figure.canvas.mpl_connect('button_press_event', self.on_press)
        self.cidrelease = self.ax.figure.canvas.mpl_connect('button_release_event', self.on_release)
    def on_press(self, event):
        print 'press'
        x0 = event.x
        y0 = event.y
        print event.inaxes
        self.press = (x0,y0)
        
        print x0,y0
        
    def on_release(self, event):
        if event.inaxes == self.ax:
            print event.inaxes
            print event.x, event.y,
            print 'release'
        self.press = None
        
    def disconnect(self):
        self.ax.figure.canvas.mpl_disconnect(self.cidpresss)
        self.ax.figure.canvas.mpl_disconnect(self.cidrelease)


 241 release
765 241 release
765 241 release
765 241 release

In [170]:
features = ['sepalL','sepalW']
f0, axx = plt.subplots(2,2, figsize = (12,8))
brushable = []
for i, row in enumerate(features):
    for j, col in enumerate(features):
        axx[j][i].scatter(flower_data[row], flower_data[col],alpha=0.5,s = 30, c=carray, edgecolors = 'none')
        brush = BrushingRectangle()
        brushable.append(brush)


press
press
press
press
press
press
Axes(0.547727,0.1;0.352273x0.363636)
614 190 release
Axes(0.547727,0.1;0.352273x0.363636)
614 190 release
Axes(0.547727,0.1;0.352273x0.363636)
614 190 release
Axes(0.547727,0.1;0.352273x0.363636)
614 190 release
press
Axes(0.547727,0.1;0.352273x0.363636)
615 199 release
Axes(0.547727,0.1;0.352273x0.363636)
615 199 release
Axes(0.547727,0.1;0.352273x0.363636)
615 199 release
Axes(0.547727,0.1;0.352273x0.363636)
615 199 release
press
press
press
press
press
press
press
press
press
press
press
press
press
press
press
press
press
press
press
press
press
press
press
Axes(0.547727,0.1;0.352273x0.363636)
710 233 release
Axes(0.547727,0.1;0.352273x0.363636)
710 233 release
Axes(0.547727,0.1;0.352273x0.363636)
710 233 release
Axes(0.547727,0.1;0.352273x0.363636)
710 233 release
press
press
Axes(0.547727,0.1;0.352273x0.363636)
797 140 release
Axes(0.547727,0.1;0.352273x0.363636)
797 140 release
Axes(0.547727,0.1;0.352273x0.363636)
797 140 release
Axes(0.547727,0.1;0.352273x0.363636)
797 140 release
press

In [166]:
plt.close('all')




In [136]:
import matplotlib.pyplot as plt
from matplotlib.patches import Rectangle

class Annotate(object):
    def __init__(self):
        self.ax = plt.gca()
        self.rect = Rectangle((0,0), 1, 1)
        self.x0 = None
        self.y0 = None
        self.x1 = None
        self.y1 = None
        self.ax.add_patch(self.rect)
        self.ax.figure.canvas.mpl_connect('button_press_event', self.on_press)
        self.ax.figure.canvas.mpl_connect('button_release_event', self.on_release)

    def on_press(self, event):
        print 'press'
        self.x0 = event.xdata
        self.y0 = event.ydata

    def on_release(self, event):
        print 'release'
        self.x1 = event.xdata
        self.y1 = event.ydata
        self.rect.set_width(self.x1 - self.x0)
        self.rect.set_height(self.y1 - self.y0)
        self.rect.set_xy((self.x0, self.y0))
        self.ax.figure.canvas.draw()

a = Annotate()
plt.show()


press
release
press
release
press
release
press
release
press
release

In [ ]: