def draw_vector_field(self, x, y, u, v): di, dj = self.config['vfield.dij'] x, y = self._convCoord(x, y) m = np.zeros(x.shape, 'bool') dij = self.config['vfield.dij'] dij0 = self.config['vfield.dij0'] m[dij0[0]::dij[0], dij0[1]::dij[1]] = True self.handles['quiver'] += [ self.ax.quiver(x[m], y[m], u[m], v[m], **self.config['vfield.options']) ] X, Y, U = self.config['vfield.key_XYU'] if U: if U == 'auto': U = 2 * ticks.nicenum(np.sqrt(u**2 + v**2).mean(), 1) if self.config['vfield.key_label'] == 'auto': Label = str(U) else: Label = self.config['vfield.key_label'] self.handles['quiver_key'] += [ self.ax.quiverkey(self.handles['quiver'][-1], X, Y, U, Label, **self.config['vfield.key_options']) ]
def simplify(x, y, lev=0): '''ugly way to reduce the number of x,y points''' from okean import ticks nnx = ticks.nicenum(x.mean(), True) nny = ticks.nicenum(y.mean(), True) expx = np.floor(np.log10(nnx)) expy = np.floor(np.log10(nny)) x = np.round(x, lev + int(expx)) y = np.round(y, lev + int(expy)) xy = x + 1j * y np.random.shuffle(xy) # assure i is always different! xy, ind = np.unique(xy, True) return xy.real, xy.imag, ind
def simplify(x,y,lev=0): '''ugly way to reduce the number of x,y points''' from okean import ticks nnx=ticks.nicenum(x.mean(),True) nny=ticks.nicenum(y.mean(),True) expx=np.floor(np.log10(nnx)) expy=np.floor(np.log10(nny)) x=np.round(x,lev+int(expx)) y=np.round(y,lev+int(expy)) xy=x+1j*y np.random.shuffle(xy) # assure i is always different! xy,ind=np.unique(xy,True) return xy.real,xy.imag,ind
def draw_vector_field(self,x,y,u,v): di,dj=self.config['vfield.dij'] x,y=self._convCoord(x,y) m=np.zeros(x.shape,'bool') dij=self.config['vfield.dij'] dij0=self.config['vfield.dij0'] m[dij0[0]::dij[0],dij0[1]::dij[1]]=True self.handles['quiver']+=[self.ax.quiver(x[m],y[m],u[m],v[m],**self.config['vfield.options'])] X,Y,U=self.config['vfield.key_XYU'] if U: if U=='auto': U=2*ticks.nicenum(np.sqrt(u**2+v**2).mean(),1) if self.config['vfield.key_label']=='auto': Label=str(U) else: Label=self.config['vfield.key_label'] self.handles['quiver_key']+=[self.ax.quiverkey(self.handles['quiver'][-1],X,Y,U,Label, **self.config['vfield.key_options'])]
def draw_vector_field(self,x,y,u,v): if x is None or y is None: ny,nx=v.shape x,y=np.meshgrid(np.arange(nx,dtype=v.dtype),np.arange(ny,dtype=v.dtype)) #### di,dj=self.config['vfield.dij'] x,y=self._convCoord(x,y) m=np.zeros(x.shape,'bool') dij=self.config['vfield.dij'] dij0=self.config['vfield.dij0'] m[dij0[0]::dij[0],dij0[1]::dij[1]]=True #self.handles['quiver']+=[self.ax.quiver(x[m],y[m],u[m],v[m],**self.config['vfield.options'])] C=self.config['vfield.C'] if C: if C is 'speed': C=np.sqrt(u[m]**2+v[m]**2) else: C=C[m] args=x[m],y[m],u[m],v[m],C else: args=x[m],y[m],u[m],v[m] self.handles['quiver']+=[self.ax.quiver(*args,**self.config['vfield.options'])] X,Y,U=self.config['vfield.key_XYU'] if U: if U=='auto': U=2*ticks.nicenum(np.sqrt(u**2+v**2).mean(),1) if self.config['vfield.key_label']=='auto': Label=str(U) else: Label=self.config['vfield.key_label'] self.handles['quiver_key']+=[self.ax.quiverkey(self.handles['quiver'][-1],X,Y,U,Label, **self.config['vfield.key_options'])]