Ignore:
Timestamp:
18/01/10 16:16:55 (11 years ago)
Author:
pnorton
Message:

Started to implement multiple line selection.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • qesdi/graphplotter/trunk/graphplotter/lib/plot_builder.py

    r6319 r6330  
    2929    def buildPlot(self): 
    3030         
    31         selection = self._buildSelection() 
     31        selections = self._buildSelections() 
    3232         
    33         log.debug("selection = %s" % (selection,)) 
     33        log.debug("selections = %s" % (selections,)) 
    3434         
    3535        reader = DataReader(self.config['path'], self.config['axisLookup']) 
    36          
    37         log.debug("reader.getData = %s" % (reader.getData,)) 
    38         xdata, ydata = reader.getData(self.params['variable'],  
    39                             self.params['axis'], selection) 
    40          
    41         log.debug("xdata = %s, ydata = %s" % (xdata, ydata,)) 
    4236         
    4337        plt = Plot() 
     
    4640        plt.setXLabel(self.params['axis']) 
    4741         
    48         lineName = self._getLineName(selection) 
     42        s = set(selections[0].items()) 
    4943         
    50         plt.draw(xdata, ydata, label=lineName) 
     44        for sel in selections[1:]: 
     45            s = s.intersection(sel.items()) 
     46             
     47        commonItems = dict(s) 
     48         
     49        title = self.params['variable']+ ' vs ' + self.params['axis'] 
     50         
     51        if len(commonItems) > 1:  
     52            title += ' with ' + self._getLineName(commonItems) 
     53             
     54        plt.setTitle(title) 
     55         
     56        log.debug("commonItems = %s" % (commonItems,)) 
     57         
     58        for sel in selections: 
     59            xdata, ydata = reader.getData(self.params['variable'],  
     60                                          self.params['axis'], sel) 
     61         
     62             
     63            lineName = self._getLineName(sel, commonItems) 
     64             
     65            plt.draw(xdata, ydata, label=lineName) 
    5166         
    5267        return plt.getImage() 
    5368     
    54     def _buildSelection(self): 
     69    def _buildSelections(self): 
     70         
     71        selections = [] 
     72        i = 0 
     73        selFound = True 
     74         
     75        while(selFound): 
     76         
     77            prefix = 's_%02i_' % (i,) 
     78         
     79            sel = self._getSelection(prefix) 
     80             
     81            selFound = sel is not None 
     82            if selFound: 
     83                selections.append(sel) 
     84            i += 1 
     85         
     86        return selections 
     87     
     88    def _getSelection(self, prefix): 
    5589        sel = {} 
    5690         
    5791        for k, v in self.params.items(): 
    58             if k.find('sel_') == 0: 
    59                 sel[k[4:]] = v 
     92            if k.find(prefix) == 0: 
     93                sel[k[len(prefix):]] = v 
     94         
     95        if len(sel) == 0: 
     96            sel = None 
    6097         
    6198        return sel 
    6299     
    63     def _getLineName(self, selection): 
     100    def _getLineName(self, selection, commonItems={}): 
    64101         
    65102        name = "" 
    66103         
    67104        for k in sorted(selection.keys()): 
     105             
     106            if k in commonItems: 
     107                continue 
     108             
    68109            name = name + "%s=%s, " % (k, selection[k]) 
    69110         
Note: See TracChangeset for help on using the changeset viewer.