Ignore:
Timestamp:
04/18/12 14:55:54 (2 years ago)
Author:
Ales Erjavec <ales.erjavec@…>
Branch:
default
Message:

Added 'Save Graph' and 'Report'.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • Orange/OrangeWidgets/Prototypes/OWPCA.py

    r10807 r10808  
    9494                    "use_generalized_eigenvectors", "auto_commit"] 
    9595    def __init__(self, parent=None, signalManager=None, title="PCA"): 
    96         OWWidget.__init__(self, parent, signalManager, title) 
     96        OWWidget.__init__(self, parent, signalManager, title, wantGraph=True) 
    9797 
    9898        self.inputs = [("Input Data", Orange.data.Table, self.set_data)] 
     
    190190                     self.on_cutoff_moved 
    191191                     ) 
     192 
     193        self.connect(self.graphButton, 
     194                     SIGNAL("clicked()"), 
     195                     self.scree_plot.save_to_file) 
     196 
    192197        self.components = None 
    193198        self.variances = None 
     
    348353        self.variance_covered = self.variances_cumsum[components - 1] * 100 
    349354        if self.currently_selected != self.number_of_selected_components(): 
    350 #            self.max_components = int(np.floor(value)) + 1 
    351 #            self.variance_covered = self.variances_cumsum[self.max_components - 1] * 100 
    352355            self.update_components_if() 
    353356 
     
    373376        return min(variance_components + 1, self.max_components) 
    374377 
     378    def sendReport(self): 
     379        self.reportSettings("PCA Settings", 
     380                            [("Max. components", self.max_components), 
     381                             ("Variance covered", "%i%%" % self.variance_covered), 
     382                             ]) 
     383        if self.data is not None and self.projector_full: 
     384            output_domain = self.projector_full.output_domain 
     385            st_dev = np.sqrt(self.projector_full.variances) 
     386            summary = [[""] + [a.name for a in output_domain.attributes], 
     387                       ["Std. deviation"] + ["%.3f" % sd for sd in st_dev], 
     388                       ["Proportion Var"] + ["%.3f" % v for v in self.variances * 100.0], 
     389                       ["Cumulative Var"] + ["%.3f" % v for v in self.variances_cumsum * 100.0] 
     390                       ] 
     391 
     392            th = "<th>%s</th>".__mod__ 
     393            header = "".join(map(th, summary[0])) 
     394            td = "<td>%s</td>".__mod__ 
     395            summary = ["".join(map(td, row)) for row in summary[1:]] 
     396            tr = "<tr>%s</tr>".__mod__ 
     397            summary = "\n".join(map(tr, [header] + summary)) 
     398            summary = "<table>\n%s\n</table>" % summary 
     399 
     400            self.reportSection("Summary") 
     401            self.reportRaw(summary) 
     402 
     403            self.reportSection("Scree Plot") 
     404            self.reportImage(self.scree_plot.save_to_file_direct) 
     405 
    375406if __name__ == "__main__": 
    376407    app = QApplication(sys.argv) 
Note: See TracChangeset for help on using the changeset viewer.