From d84799e0c1a57771fdf92179140cf6ceef472dce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matheus=20M=C3=BCller?= Date: Mon, 24 Oct 2011 09:39:59 -0200 Subject: [PATCH] Melhorias em Drag_rectangle2, operacional mas ainda sem remocao de pontos. --- concentracao.py | 17 ++++------- drag_rectangle2.py | 72 +++++++++++++++++++++++++++++++++++----------- 2 files changed, 60 insertions(+), 29 deletions(-) diff --git a/concentracao.py b/concentracao.py index 460b2ab..002c1e7 100644 --- a/concentracao.py +++ b/concentracao.py @@ -1,7 +1,5 @@ from pylab import * -#xy0 = np.loadtxt('H2.py') - ##################################################################################################### # Funcoes que corrigem erros de arredondamento @@ -32,7 +30,7 @@ def montaperfil( xy , step, modo): if modo == 'step': for i in xy: for j in arange (u, i[0], step): - if j>max(xy[:,0])/2 : + if j>max(xy[:,0])/2 and j<=len(xy) : concent[math.ceil(j/step)] = i[1] else : concent[math.floor(j/step)] = i[1] @@ -41,16 +39,11 @@ def montaperfil( xy , step, modo): if modo == 'reta': for i in xy: - for j in arange (u, i[0], step): - if j>max(xy[:,0])/2 : - concent[math.ceil(j/step)] = yu + (j-u)*(i[1] - yu)/(i[0] - u) - else : - concent[math.floor(j/step)] = yu + (j-u)*(i[1] - yu)/(i[0] - u) - u = i[0] + for j in arange (u, round(i[0],2), step): + concent[round(j/step)] = yu + (j-u)*(i[1] - yu)/(i[0] - u) + u = round(i[0],2) yu = i[1] fix2(concent, profundidade) - print concent - plot(profundidade, concent) - show() + return concent diff --git a/drag_rectangle2.py b/drag_rectangle2.py index 7fda2c9..caec964 100644 --- a/drag_rectangle2.py +++ b/drag_rectangle2.py @@ -5,26 +5,43 @@ import matplotlib.pyplot as plt from scipy.interpolate import interp1d from scipy import interpolate from pylab import * -import Tkinter as tk +from concentracao import * listay = list() listax = list() drs = [] fig = plt.figure() ax = fig.add_subplot(111) -recursivecontrol = 0 -filename = raw_input() +filename = "data.txt" #raw_input() +dxstep = 0.01 +xx = arange(0,20, dxstep) # we'll create an x-axis from 0 to 2 pi +temp, = plot(xx,xx*0) # this is our initial plot, and does nothing + ####################################################################################################### # Add square -def add_square(x): +def add_square(x, y): global listay, drs, ax rect = ax.bar(x, 0.02, width=0.3) for rec in rect: dr = DraggableRectangle(rec) dr.connect() drs.append(dr) + rec.set_y(y-0.01) + listay.append(dr.rect.xy[1]) + listax.append(dr.rect.xy[0]) + dr.updateplot() + ylim([0,1]) + xlim([0,20]) + +def add_immovable_square(x, y): + global listay, drs, ax + rect = ax.bar(x, 0.02, width=0.3) + for rec in rect: + dr = DraggableRectangle(rec) + drs.append(dr) + rec.set_y(y-0.01) listay.append(dr.rect.xy[1]) listax.append(dr.rect.xy[0]) ylim([0,1]) @@ -52,7 +69,7 @@ class voidfunctions: def on_a(self, event): if event.key=='a': if not event.inaxes: return - add_square(float(event.xdata)) + add_square(float(event.xdata), float(event.ydata)) # NAO FUNCIONA (DELETA TUDO) def on_r(self, event): @@ -65,6 +82,7 @@ class voidfunctions: self.rect.figure.canvas.mpl_disconnect(self.cida) self.rect.figure.canvas.mpl_disconnect(self.cidr) +####################################################################################################### class DraggableRectangle: lock = None # only one can be animated at a time @@ -72,7 +90,29 @@ class DraggableRectangle: self.rect = rect self.press = None self.background = None - self.rect.set_y(0.1) + + def updateplot(self): + global listax, listay, temp, drs, dxstep + xytemp = list(drs) + for i in range(len(drs)): + xytemp[i] = drs[i].rect.xy + xytemp.sort(key=lambda s: s[0]) + + for i in range(len(listay)): + (listax[i], listay[i]) = xytemp[i] + + data = open(filename , 'w') + for i in range(len(listay)): + print>>data, listax[i], listay[i] + data.close() + xydata = np.loadtxt(filename) + + modo = 'step' + modo2 = 'reta' + temp.set_ydata(montaperfil( xydata, dxstep, modo)) # update the plot data + draw() # redraw the canvas + ylim([0,1]) + xlim([0,20]) def connect(self): 'connect to all the events we need' @@ -84,8 +124,6 @@ class DraggableRectangle: 'motion_notify_event', self.on_motion) def on_press(self, event): - global drs, recursivecontrol - k = 0 'on button press we will see if the mouse is over us and store some data' if event.inaxes != self.rect.axes: return if DraggableRectangle.lock is not None: return @@ -129,6 +167,8 @@ class DraggableRectangle: # blit just the redrawn area canvas.blit(axes.bbox) + #self.updateplot() + def on_release(self, event): 'on release we reset the press data' if DraggableRectangle.lock is not self: return @@ -142,14 +182,7 @@ class DraggableRectangle: # redraw the full figure self.rect.figure.canvas.draw() - - for i in range(len(listay)): - (listax[i], listay[i]) = drs[i].rect.xy - - print listax, listay - data = open(filename , 'w') - for i in range(len(listay)): - print>>data, listax[i], listay[i] + self.updateplot() def disconnect(self): 'disconnect all the stored connection ids' @@ -157,11 +190,16 @@ class DraggableRectangle: self.rect.figure.canvas.mpl_disconnect(self.cidrelease) self.rect.figure.canvas.mpl_disconnect(self.cidmotion) +####################################################################################################### + voidrect = ax.bar(0, 0, width=0) for void in voidrect: vf = voidfunctions(void) vf.connect() -add_square(2) +add_immovable_square(0,0) +add_immovable_square(20,0) + +####################################################################################################### plt.show() -- 2.22.0