Ignore:
Timestamp:
09/20/05 11:18:45 (19 years ago)
Author:
mar637
Message:
  • Bug fix: set_cursor for Polarisations wasn't working for e.g. "U V"
  • data slicing on set_range to give mpl only the range selected. mpl ps backend always drwas all points and the clips (known bug)
File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/Release-2-fixes/python/asapplotter.py

    r671 r672  
    4545        self._ordinate = None
    4646        self._abcissa = None
     47        self._abcunit = None
    4748        self._cursor = {'t':None, 'b':None,
    4849                        'i':None, 'p':None
     
    7980                self._data = list(args)
    8081                self.set_cursor(refresh=False)
     82        # ranges become invalid when unit changes
     83        if self._abcunit != self._data[0].get_unit():
     84            self._minmaxx = None
     85            self._minmaxy = None
     86            self._abcunit = self._data[0].get_unit()
    8187        if self._panelling == 't':
    8288            maxrows = 25
     
    9399        else:
    94100            self._plot_other(self._data, self._stacking)
    95         if self._minmaxx is not None or self._minmaxy is not None:
    96             self._plotter.set_limits(xlim=self._minmaxx,ylim=self._minmaxy)
     101        if self._minmaxy is not None:
     102            self._plotter.set_limits(ylim=self._minmaxy)
    97103        self._plotter.release()
    98104        return
     
    143149                if colmode == "p":
    144150                    polmode = self._polmode[self._cursor["p"].index(j)]
    145                     j = jj
     151                    #j = jj
    146152                eval(cdict.get(colmode))
    147153                x = None
     
    179185                        llab = self._ldict.get(colmode)+' '+str(j)
    180186                self._plotter.set_line(label=llab)
     187                if self._minmaxx is not None:
     188                    s,e = self._slice_indeces(x)
     189                    x = x[s:e]
     190                    y = y[s:e]
     191                    m = m[s:e]
    181192                self._plotter.plot(x,y,m)
     193               
    182194                xlim=[min(x),max(x)]
    183195                self._plotter.axes.set_xlim(xlim)
     
    234246                if colmode == "p":
    235247                    polmode = self._polmode[self._cursor["p"].index(j)]
    236                     j = jj
     248                    #j = jj
    237249                eval(cdict.get(colmode))
    238250                x = None
     
    265277                        llab = self._ldict.get(colmode)+' '+str(j)
    266278                self._plotter.set_line(label=llab)
     279                if self._minmaxx is not None:
     280                    s,e = self._slice_indeces(x)
     281                    x = x[s:e]
     282                    y = y[s:e]
     283                    m = m[s:e]
     284
    267285                self._plotter.plot(x,y,m)
    268286                xlim=[min(x),max(x)]
     
    384402                            llab = self._ldict.get(colmode)+' '+str(j)
    385403                self._plotter.set_line(label=llab)
     404                if self._minmaxx is not None:
     405                    s,e = self._slice_indeces(x)
     406                    x = x[s:e]
     407                    y = y[s:e]
     408                    m = m[s:e]
     409
    386410                self._plotter.plot(x,y,m)
    387411                xlim=[min(x),max(x)]
     
    643667            tlab = scan._getpolarizationlabel(1,0,0)
    644668        return tlab
     669
     670    def _slice_indeces(self, data):
     671        mn = self._minmaxx[0]
     672        mx = self._minmaxx[1]
     673        asc = data[0] < data[-1]       
     674        start=0
     675        end = len(data)-1
     676        inc = 1
     677        if not asc:
     678            start = len(data)-1
     679            end = 0
     680            inc = -1
     681        # find min index
     682        while data[start] < mn:
     683            start+= inc
     684        # find max index
     685        while data[end] > mx:
     686            end-=inc
     687        end +=1
     688        if start > end:
     689            return end,start
     690        return start,end
    645691           
    646692if __name__ == '__main__':
Note: See TracChangeset for help on using the changeset viewer.