Пример #1
0
    def get_zrange(self,
                   zrange=[None, None],
                   xrange=[None, None],
                   yrange=[None, None],
                   scale='linear'):

        x, y, z = self._eval_xy()
        if (xrange[0] is not None and xrange[1] is not None
                and yrange[0] is not None and yrange[1] is not None):
            if x.size * y.size == z.size:
                idx1 = np.where((y >= yrange[0]) & (y <= yrange[1]))[0]
                idx2 = np.where((x >= xrange[0]) & (x <= xrange[1]))[0]
                if (len(idx1) == 0 or len(idx2) == 0):
                    if (zrange[0] is None and zrange[1] is None):
                        # this is for safety maybe not necessary
                        if scale == 'log':
                            z = mask_negative(z)
                        self._update_range(
                            zrange, [np.nanmin(z), np.nanmax(z)])
                        zrange = update_zrange(z)
                else:
                    zt = z[idx1, :]
                    zt = zt[:, idx2]
                    if scale == 'log':
                        zt = mask_negative(zt)
                    self._update_range(zrange, [np.nanmin(zt), np.nanmax(zt)])
            else:
                self._update_range(zrange, [np.nanmin(z), np.nanmax(z)])

        return zrange
Пример #2
0
    def get_zrange(self, zrange=[None,None], 
                         xrange=[None,None], 
                         yrange=[None,None],
                         scale = 'linear'):
        
        x, y, z = self._eval_xy()
        if (xrange[0] is not None and
            xrange[1] is not None and
            yrange[0] is not None and
            yrange[1] is not None):
            if x.size*y.size == z.size:
               idx1 =  np.where((y >= yrange[0]) & (y <= yrange[1]))[0]
               idx2 =  np.where((x >= xrange[0]) & (x <= xrange[1]))[0]
               if (len(idx1) == 0 or len(idx2) == 0):
                   if (zrange[0] is None and
                       zrange[1] is None):
                       ### this is for safety maybe not necessary
                       if scale == 'log': z = mask_negative(z)
                       self._update_range(zrange, [np.nanmin(z), np.nanmax(z)])                       
                       zrange = update_zrange(z)
               else:
                   zt = z[idx1,:]
                   zt = zt[:, idx2]
                   if scale == 'log': zt = mask_negative(zt)
                   self._update_range(zrange, [np.nanmin(zt), np.nanmax(zt)])
            else:
                self._update_range(zrange, [np.nanmin(z), np.nanmax(z)])

        return zrange
Пример #3
0
 def get_xrange(self, xrange=[None, None], scale='linear'):
     if self._mpl_cmd == 'fill':
         x, y, s = self._eval_xy()
         if x is None:
             return
         if scale == 'log':
             x = mask_negative(x)
         return self._update_range(xrange, [np.nanmin(x), np.nanmax(x)])
     elif self._mpl_cmd == 'fill_between':
         x, y, y2, where = self._eval_xy()
         if x is None:
             return
         if scale == 'log':
             x = mask_negative(x)
         return self._update_range(xrange, [np.nanmin(x), np.nanmax(x)])
     elif self._mpl_cmd == 'fill_betweenx':
         y, x, x2, where = self._eval_xy()
         if x is None:
             return
         if x2 is None:
             return
         if scale == 'log':
             x = mask_negative(x)
             x2 = mask_negative(x2)
         return self._update_range(xrange, [
             np.nanmin([np.nanmin(x), np.nanmin(x2)]),
             np.nanmax([np.nanmax(x), np.nanmax(x2)])
         ])
Пример #4
0
    def get_crange(self, crange=[None, None],
                   xrange=[None, None],
                   yrange=[None, None],
                   scale='linear'):

        x, y, z = self._eval_xyz()
        
        if np.iscomplex(z).any():
            z = z.astype(np.float)

        if self.get_figaxes().get_3d():
            crange = self._update_range(crange,
                                        (np.amin(z), np.amax(z)))
            return crange
            
        if (xrange[0] is not None and
            xrange[1] is not None and
            yrange[0] is not None and
                yrange[1] is not None):
            if x.size*y.size == z.size:
                idx1 = np.where((y >= yrange[0]) & (y <= yrange[1]))[0]
                idx2 = np.where((x >= xrange[0]) & (x <= xrange[1]))[0]
                if (len(idx1) == 0 or len(idx2) == 0):
                    if (crange[0] is None and
                            crange[1] is None):
                        # this is for safety maybe not necessary
                        if scale == 'log':
                            z = mask_negative(z)
                        crange = self._update_range(crange,
                                                    (np.min(z), np.max(z)))

                else:
                    zt = z[idx1, :]
                    zt = zt[:, idx2]
                    if scale == 'log':
                        zt = mask_negative(zt)
                    crange = self._update_range(crange,
                                                (np.nanmin(zt), np.nanmax(zt)))

            elif x.size == z.size and y.size == z.size:
                idx1 = np.where((y.flatten() >= yrange[0]) & (y.flatten() <= yrange[1]) &
                                (x.flatten() >= xrange[0]) & (x.flatten() <= xrange[1]))[0]
                if (len(idx1) == 0):
                    if scale == 'log':
                        zt = mask_negative(zt)
                    crange = self._update_range(crange,
                                                (min(zt), max(zt)))
                else:
                    zt = z.flatten()[idx1]
                    if scale == 'log':
                        zt = mask_negative(zt)
                    crange = self._update_range(crange,
                                                (np.amin(zt), np.amax(zt)))
            else:
                # if len(_tri) == len(z), it comes here
                crange = self._update_range(crange,
                                            (np.nanmin(z), np.nanmax(z)))

        return crange
Пример #5
0
 def get_xrange(self, xrange=[None, None], scale='linear'):
     x, y = self._eval_xy()
     if len(self._artists) != 0:
         xc = self._artists[0].get_xdata()
     else:
         xc, yc = calc_xy(x, y, mesh=self._mesh, mode=self._sp_interp)
     if scale == 'log':
         x = mask_negative(x)
         xc = mask_negative(xc)
     return self._update_range(xrange, [
         np.nanmin([np.nanmin(x), np.nanmin(xc)]),
         np.nanmax([np.nanmax(x), np.nanmax(xc)])
     ])
Пример #6
0
 def get_xrange(self, xrange=[None,None], scale = 'linear'):
     x, y = self._eval_xy()
     if len(self._artists) != 0:
        xc = self._artists[0].get_xdata()
     else:
        xc, yc = calc_xy(x, y,
                         mesh = self._mesh, 
                         mode=self._sp_interp)
     if scale == 'log': 
        x  = mask_negative(x)
        xc = mask_negative(xc)
     return self._update_range(xrange, [np.nanmin([np.nanmin(x), np.nanmin(xc)]),
                                        np.nanmax([np.nanmax(x), np.nanmax(xc)])]) 
Пример #7
0
    def get_crange(self, crange=[None,None], 
                         xrange=[None,None], 
                         yrange=[None,None], 
                         scale='linear'):

        x, y, z = self._eval_xyz()
        if np.iscomplex(z).any():
            z = z.astype(np.float)
        if (xrange[0] is not None and
            xrange[1] is not None and
            yrange[0] is not None and
            yrange[1] is not None):
            if x.size*y.size == z.size:
               idx1 =  np.where((y >= yrange[0]) & (y <= yrange[1]))[0]
               idx2 =  np.where((x >= xrange[0]) & (x <= xrange[1]))[0]
               if (len(idx1) == 0 or len(idx2) == 0):
                   if (crange[0] is None and
                       crange[1] is None):
                       ### this is for safety maybe not necessary
                       if scale == 'log': z = mask_negative(z)
                       crange = self._update_range(crange, 
                                                   (np.min(z), np.max(z)))

               else:
                   zt = z[idx1,:]
                   zt = zt[:, idx2]
                   if scale == 'log': zt = mask_negative(zt)
                   crange = self._update_range(crange,
                                               (np.nanmin(zt), np.nanmax(zt)))

            elif x.size == z.size and y.size == z.size:
               idx1 =  np.where((y.flatten() >= yrange[0]) & (y.flatten() <= yrange[1]) &
                                (x.flatten() >= xrange[0]) & (x.flatten() <= xrange[1]))[0]
               if (len(idx1) == 0):
                   if scale == 'log': zt = mask_negative(zt)
                   crange = self._update_range(crange, 
                                               (min(zt), max(zt)))
               else:
                   zt = z.flatten()[idx1]
                   if scale == 'log': zt = mask_negative(zt)
                   crange = self._update_range(crange,
                                               (np.amin(zt), np.amax(zt)))
            else:
               # if len(_tri) == len(z), it comes here
               crange = self._update_range(crange,
                                           (np.nanmin(z), np.nanmax(z)))
                
        return crange
Пример #8
0
 def get_xrange(self, xrange=[None, None], scale='linear'):
     x, y = self._eval_xy()
     if scale == 'log': x = mask_negative(x)
     if x.size > 0:
         return self._update_range(xrange, [np.nanmin(x), np.nanmax(x)])
     else:
         return super(FigAxline, self).get_xrange(xrange, scale=scale)
Пример #9
0
 def get_yrange(self, yrange=[None, None], xrange=[None, None], scale='linear'):
     x, y, z = self._eval_xyz()
     if y is None:
         return yrange
     if scale == 'log':
         y = mask_negative(y)
     return self._update_range(yrange, (np.nanmin(y), np.nanmax(y)))
Пример #10
0
 def get_xrange(self, xrange=[None, None], scale='linear'):
     x, y, z = self._eval_xy()
     if x is None:
         return xrange
     if scale == 'log':
         x = mask_negative(x)
     return self._update_range(xrange, (np.nanmin(x), np.nanmax(x)))
Пример #11
0
 def get_xrange(self, xrange=[None, None], scale='linear'):
     x, y, z, u, v, w = self._eval_xyzw()  # this handles "use_var"
     if x is None:
         return
     if scale == 'log':
         x = mask_negative(x)
     return self._update_range(xrange, [np.nanmin(x), np.nanmax(x)])
Пример #12
0
 def get_xrange(self, xrange=[None,None], scale='linear'):
     x, y  = self._eval_xy()
     if scale == 'log': x = mask_negative(x)
     if x.size > 0:
          return self._update_range(xrange, [np.nanmin(x), np.nanmax(x)])
     else:
          return super(FigAxline, self).get_xrange(xrange, scale=scale)
Пример #13
0
 def get_crange(self, crange=[None,None], 
                      xrange=[None,None], 
                      yrange=[None,None], scale = 'linear'):
     if self._mpl_cmd == 'plot':
         x, y, z, s, c = self._eval_xy() 
     else:
         x, y, z, s, c, xerr, yerr = self._eval_xy()
     if c is not None:
         if scale == 'log': c = mask_negative(c)            
         crange = self._update_range(crange,
                                     (np.nanmin(c) ,np.nanmax(c)))
     else:
         if z is not None and self.getp('cz'):
             if scale == 'log': z= mask_negative(z)
             crange = self._update_range(crange,
                                         (np.nanmin(z) ,np.nanmax(z)))
     return crange
Пример #14
0
 def get_xrange(self, xrange=[None, None], scale='linear'):
     x  = self.getvar('x')        
     xrange = self._update_range(xrange, [np.nanmin(x), np.nanmax(x)])        
     return xrange        
     x, y, z = self._eval_xyz()
     if x is None: return xrange
     if scale == 'log': x = mask_negative(x)
     return self._update_range(xrange, [np.nanmin(x), np.nanmax(x)])
Пример #15
0
    def get_yrange(self, yrange=[None, None], 
                         xrange=[None, None], scale = 'linear'):
#        de = self.get_data_extent()
        x, y, z = self._eval_xyz()
        if x is None: return yrange
        if y is None: return yrange
        if scale == 'log': y = mask_negative(y)
        return self._update_range(yrange, (np.nanmin(y), np.nanmax(y)))
Пример #16
0
 def get_yrange(self, yrange=[None,None], xrange=[None, None], scale = 'linear'):
     x, y  = self._eval_xy()
     if scale == 'log': y = mask_negative(y)
     if y.size != 0:
         return self._update_range(yrange, [np.nanmin(y), np.nanmax(y)])
     else:
         return super(FigAxspan, self).get_yrange(yrange=yrange, 
                                                  xrange = xrange, scale=scale)
Пример #17
0
 def get_yrange(self, yrange=[None, None],
                xrange=[None, None], scale='linear'):
     #        de = self.get_data_extent()
     x, y, z, u, v, w = self._eval_xyzw()  # this handles "use_var"
     if y is None:
         return
     if scale == 'log':
         y = mask_negative(y)
     return self._update_range(yrange, (np.nanmin(y), np.nanmax(y)))
Пример #18
0
 def get_zrange(self, zrange=[None, None],
                xrange=[None, None],
                yrange=[None, None], scale='linear'):
     x, y, z, u, v, w = self._eval_xyzw()  # this handles "use_var"
     if z is None:
         return
     if scale == 'log':
         z = mask_negative(z)
     return self._update_range(zrange, (np.nanmin(z), np.nanmax(z)))
Пример #19
0
 def get_crange(self,
                crange=[None, None],
                xrange=[None, None],
                yrange=[None, None],
                scale='linear'):
     if self._mpl_cmd == 'plot':
         x, y, z, s, c = self._eval_xy()
     else:
         x, y, z, s, c, xerr, yerr = self._eval_xy()
     if c is not None:
         if scale == 'log': c = mask_negative(c)
         crange = self._update_range(crange, (np.nanmin(c), np.nanmax(c)))
     else:
         if z is not None and self.getp('cz'):
             if scale == 'log': z = mask_negative(z)
             crange = self._update_range(crange,
                                         (np.nanmin(z), np.nanmax(z)))
     return crange
Пример #20
0
 def get_xrange(self, xrange=[None, None], scale='linear'):
     if (self.getvar('offset') is not None and
         self.getvar('zdir') == 'x'):
         return  self._update_range(xrange, (self.getvar('offset'),
                                             self.getvar('offset'),)) 
     x, y, z = self._eval_xyz()
     if x is None: return
     if scale == 'log': x = mask_negative(x)
     return self._update_range(xrange, [np.nanmin(x), np.nanmax(x)])
Пример #21
0
    def get_xrange(self, xrange=[None,None], scale = 'linear'):
#        de = self.get_data_extent()[0:2]
#        if de is not None:
        if self._mpl_cmd == 'plot':
            x, y, z, s, c = self._eval_xy() # this handles "use_var"
        else:
            x, y, z, s, c, xerr, yerr = self._eval_xy() # this handles "use_var"
        if x is None: return
        if scale == 'log': x = mask_negative(x)
        return self._update_range(xrange, [np.nanmin(x), np.nanmax(x)])
Пример #22
0
 def get_xrange(self, xrange=[None, None], scale='linear'):
     if (self.getvar('offset') is not None and self.getvar('zdir') == 'x'):
         return self._update_range(xrange, (
             self.getvar('offset'),
             self.getvar('offset'),
         ))
     x, y, z = self._eval_xyz()
     if x is None: return
     if scale == 'log': x = mask_negative(x)
     return self._update_range(xrange, [np.nanmin(x), np.nanmax(x)])
Пример #23
0
 def get_xrange(self, xrange=[None, None], scale='linear'):
     #        de = self.get_data_extent()[0:2]
     #        if de is not None:
     if self._mpl_cmd == 'plot':
         x, y, z, s, c = self._eval_xy()  # this handles "use_var"
     else:
         x, y, z, s, c, xerr, yerr = self._eval_xy(
         )  # this handles "use_var"
     if x is None: return
     if scale == 'log': x = mask_negative(x)
     return self._update_range(xrange, [np.nanmin(x), np.nanmax(x)])
Пример #24
0
 def get_xrange(self, xrange=[None,None], scale='linear'):
     if self._mpl_cmd == 'fill':
         x, y, s = self._eval_xy()
         if x is None: return
         if scale == 'log': x = mask_negative(x)
         return self._update_range(xrange, [np.nanmin(x), np.nanmax(x)])
     elif self._mpl_cmd == 'fill_between':
         x, y, y2, where = self._eval_xy()
         if x is None: return
         if scale == 'log': x = mask_negative(x)
         return self._update_range(xrange, [np.nanmin(x), np.nanmax(x)])
     elif self._mpl_cmd == 'fill_betweenx':
         y, x, x2, where = self._eval_xy()
         if x is None: return
         if x2 is None: return
         if scale == 'log': 
             x  = mask_negative(x)
             x2 = mask_negative(x2)
         return self._update_range(xrange, [np.nanmin([np.nanmin(x), np.nanmin(x2)]),
                                            np.nanmax([np.nanmax(x), np.nanmax(x2)])]) 
Пример #25
0
 def get_zrange(self, zrange=[None,None], 
                      xrange=[None,None], 
                      yrange=[None,None], scale = 'linear'):
     if self._mpl_cmd == 'plot':
         x, y, z, s, c = self._eval_xy() 
     else:
         x, y, z, s, c, xerr, yerr = self._eval_xy() 
     if z is not None:
         if scale == 'log': z = mask_negative(z)
         zrange = self._update_range(zrange, (np.nanmin(z), np.nanmax(z)))
     return zrange
Пример #26
0
    def get_yrange(self, yrange=[None, None], 
                         xrange=[None, None], scale = 'linear'):
#        de = self.get_data_extent()
        if (self.getvar('offset') is not None and
            self.getvar('zdir') == 'y'):
            return  self._update_range(yrange, (self.getvar('offset'),
                                                self.getvar('offset'),)) 
        x, y, z = self._eval_xyz()
        if x is None: return
        if y is None: return
        if scale == 'log': y = mask_negative(y)
        return self._update_range(yrange, (np.nanmin(y), np.nanmax(y)))
Пример #27
0
 def get_zrange(self,
                zrange=[None, None],
                xrange=[None, None],
                yrange=[None, None],
                scale='linear'):
     if self._mpl_cmd == 'plot':
         x, y, z, s, c = self._eval_xy()
     else:
         x, y, z, s, c, xerr, yerr = self._eval_xy()
     if z is not None:
         if scale == 'log': z = mask_negative(z)
         zrange = self._update_range(zrange, (np.nanmin(z), np.nanmax(z)))
     return zrange
Пример #28
0
 def get_xrange(self, xrange=[None, None], scale='linear'):
     x, y, z = self._eval_xyz()
     if x is None:
         return xrange
     if not self.get_figaxes().get_3d():
         if scale == 'log':
             x = mask_negative(x)
         return self._update_range(xrange, [np.nanmin(x), np.nanmax(x)])
     else:
         im_center, ax1, ax2 = self._get_3d_placement()
         data = np.hstack([im_center[0] + ax1[0]*x, im_center[0] + ax2[0]*y])
         xrange = self._update_range(xrange,
                                    (np.nanmin(data), np.nanmax(data)))
         return xrange
Пример #29
0
 def get_crange(self, crange=[None,None], 
                      xrange=[None,None], 
                      yrange=[None,None], 
                      scale='linear'):
     if len(self._artists) == 0:
         return  FigImage.get_crange(self, crange = crange,
                          xrange = xrange, yrange = yrange,
                          scale = scale)
     else:
         zt = self._artists[0].get_array()
         if scale == 'log': zt = mask_negative(zt)
         crange = self._update_range(crange, 
                                    (min(zt), max(zt)))
     return crange
Пример #30
0
    def get_yrange(self,
                   yrange=[None, None],
                   xrange=[None, None],
                   scale='linear'):
        if self._n is not None:
            return self._update_range(yrange, (0, np.nanmax(self._n)))
        else:
            return yrange
#        de = self.get_data_extent()
        x, y, z = self._eval_xyz()
        if x is None: return yrange
        if y is None: return yrange
        if scale == 'log': y = mask_negative(y)
        return self._update_range(yrange, (np.nanmin(y), np.nanmax(y)))
Пример #31
0
        def calc_yrange(x, y, xrange, yrange, scale):
            # x.ndim = 1, y.ndim = 1 in this func
            xidx = np.isfinite(x)
            idx = (np.where((x[xidx] >= xrange[0]) & (x[xidx] <= xrange[1])))
            check = False
            for ar in idx:
                if len(ar) == 0: check = True
            if check: return yrange

            yy = y[xidx][idx]
            if scale == 'log': yy = mask_negative(yy)
            y0n = np.nanmin(yy)
            y1n = np.nanmax(yy)
            yrange = self._update_range(yrange, (y0n, y1n))
            return yrange
Пример #32
0
 def get_yrange(self,
                yrange=[None, None],
                xrange=[None, None],
                scale='linear'):
     #        de = self.get_data_extent()
     if (self.getvar('offset') is not None and self.getvar('zdir') == 'y'):
         return self._update_range(yrange, (
             self.getvar('offset'),
             self.getvar('offset'),
         ))
     x, y, z = self._eval_xyz()
     if x is None: return
     if y is None: return
     if scale == 'log': y = mask_negative(y)
     return self._update_range(yrange, (np.nanmin(y), np.nanmax(y)))
Пример #33
0
 def get_crange(self,
                crange=[None, None],
                xrange=[None, None],
                yrange=[None, None],
                scale='linear'):
     if len(self._artists) == 0:
         return FigImage.get_crange(self,
                                    crange=crange,
                                    xrange=xrange,
                                    yrange=yrange,
                                    scale=scale)
     else:
         zt = self._artists[0].get_array()
         if scale == 'log': zt = mask_negative(zt)
         crange = self._update_range(crange, (min(zt), max(zt)))
     return crange
Пример #34
0
        def calc_yrange(x, y, xrange, yrange, scale):
            # x.ndim = 1, y.ndim = 1 in this func
            xidx = np.isfinite(x)
            idx = (np.where((x[xidx] >= xrange[0]) & 
                            (x[xidx] <= xrange[1])))
            check = False
            for ar in idx: 
                if len(ar) == 0: check = True
            if check: return yrange

            yy = y[xidx][idx]
            if scale == 'log': yy = mask_negative(yy)
            y0n=np.nanmin(yy)
            y1n=np.nanmax(yy)
            yrange = self._update_range(yrange, (y0n, y1n))
            return yrange
Пример #35
0
 def get_yrange(self, yrange=[None, None],
                xrange=[None, None], scale='linear'):
     #        de = self.get_data_extent()
     x, y, z = self._eval_xyz()
     if x is None:
         return yrange
     if y is None:
         return yrange
     if not self.get_figaxes().get_3d():        
         if scale == 'log':
             y = mask_negative(y)
         return self._update_range(yrange, (np.nanmin(y), np.nanmax(y)))
     else:
         im_center, ax1, ax2 = self._get_3d_placement()
         data = np.hstack([im_center[1] + ax1[1]*x, im_center[0] + ax2[1]*y])
         yrange = self._update_range(yrange,
                                    (np.nanmin(data), np.nanmax(data)))
         return yrange