📄 owcorranalysis.py
字号:
self.percRow = len(self.tipsR) > 100 and 0.5 * len(self.tipsR) or len(self.tipsR)
self.colSlider.setMinValue(1)
self.colSlider.setMaxValue(len(self.tipsC))
self.percCol = len(self.tipsC) > 100 and 0.5 * len(self.tipsC) or len(self.tipsC)
self.initAxesValues()
self.tabsMain.showPage(self.graph)
self.calcRadius()
del caList
def initAxesValues(self):
self.attrXCombo.clear()
self.attrYCombo.clear()
if self.data == None: return
for i in range(1, min(self.CA.D.shape) + 1):
self.attrXCombo.insertItem(str(i))
self.attrYCombo.insertItem(str(i))
self.attrX = str(self.attrXCombo.text(0))
if self.attrYCombo.count() > 1:
self.attrY = str(self.attrYCombo.text(1))
else:
self.attrY = str(self.attrYCombo.text(0))
self.contributionBox()
def contributionBox(self):
self.firstAxis.setText ('Axis %d: %f%%' % (int(self.attrX), self.CA.InertiaOfAxis(1)[int(self.attrX)-1]))
self.secondAxis.setText ('Axis %d: %f%%' % (int(self.attrY), self.CA.InertiaOfAxis(1)[int(self.attrY)-1]))
self.updateGraph()
def buttonUpdate(self):
self.apply = True
self.updateGraph()
self.apply = False
def updateGraph(self):
self.graph.zoomStack = []
if not self.data:
return
if not self.apply:
return
self.graph.removeAllSelections()
## self.graph.removeBrowsingCurve()
self.graph.removeCurves()
self.graph.removeMarkers()
self.graph.tips.removeAll()
if self.graph.showXaxisTitle == 1: self.graph.setXaxisTitle("Axis " + self.attrX)
else: self.graph.setXaxisTitle(None)
if self.graph.showYLaxisTitle == 1: self.graph.setYLaxisTitle("Axis " + self.attrY)
else: self.graph.setYLaxisTitle(None)
cor = self.CA.getPrincipalRowProfilesCoordinates((int(self.attrX)-1, int(self.attrY)-1))
numCor = int(self.percRow)
indices = self.CA.PointsWithMostInertia(rowColumn = 0, axis = (int(self.attrX)-1, int(self.attrY)-1))[:numCor]
cor = [cor[i] for i in indices]
tipsR = [self.tipsR[i] for i in indices]
self.plotPoint(cor, 0, tipsR, "Row points", self.graph.showFilledSymbols)
cor = self.CA.getPrincipalColProfilesCoordinates((int(self.attrX)-1, int(self.attrY)-1))
numCor = int(self.percCol)
indices = self.CA.PointsWithMostInertia(rowColumn = 1, axis = (int(self.attrX)-1, int(self.attrY)-1))[:numCor]
cor = [cor[i] for i in indices]
tipsC = [self.tipsC[i] for i in indices]
self.plotPoint(cor, 1, tipsC, "Column points", self.graph.showFilledSymbols)
self.graph.enableLegend(1)
self.graph.replot()
def plotPoint(self, cor, color, tips, curveName = "", showFilledSymbols = 1):
fillColor = self.colors[color]
edgeColor = self.colors[color]
cor = array(cor)
key = self.graph.addCurve(curveName, fillColor, edgeColor, self.graph.pointWidth, xData = list(cor[:, 0]), yData = list(cor[:, 1]), showFilledSymbols = showFilledSymbols)
for i in range(len(cor)):
x = cor[i][0]
y = cor[i][1]
self.graph.tips.addToolTip(x, y, tips[i])
def sendSelections(self):
pass
def replotCurves(self):
for key in self.graph.curveKeys():
symbol = self.graph.curveSymbol(key)
self.graph.setCurveSymbol(key, QwtSymbol(symbol.style(), symbol.brush(), symbol.pen(), QSize(self.graph.pointWidth, self.graph.pointWidth)))
self.graph.repaint()
def setShowGridlines(self):
self.graph.enableGridXB(self.showGridlines)
self.graph.enableGridYL(self.showGridlines)
def setColors(self):
dlg = self.createColorDialog()
if dlg.exec_loop():
self.colorSettings = dlg.getColorSchemas()
self.graph.contPalette = dlg.getContinuousPalette("contPalette")
self.graph.discPalette = dlg.getDiscretePalette()
self.graph.setCanvasBackground(dlg.getColor("Canvas"))
self.graph.setGridPen(QPen(dlg.getColor("Grid")))
self.updateGraph()
def createColorDialog(self):
c = OWDlgs.ColorPalette(self, "Color Palette")
c.createDiscretePalette(" Discrete Palette ")
c.createContinuousPalette("contPalette", " Continuous palette ")
box = c.createBox("otherColors", " Other Colors ")
c.createColorButton(box, "Canvas", "Canvas color", Qt.white)
box.addSpace(5)
c.createColorButton(box, "Grid", "Grid color", Qt.black)
box.addSpace(5)
box.adjustSize()
c.setColorSchemas(self.colorSettings)
return c
def calcRadius(self):
self.graph.radius = (self.graph.axisScale(QwtPlot.xBottom).hBound() - self.graph.axisScale(QwtPlot.xBottom).lBound()) * self.percRadius / 100.0;
class ZoomBrowseSelectToolbar(ZoomSelectToolbar):
def __init__(self, widget, parent, graph, autoSend = 0):
ZoomSelectToolbar.__init__(self, widget, parent, graph, autoSend)
self.widget = widget
group = QHButtonGroup("Browsing", parent)
self.buttonBrowse = OWToolbars.createButton(group, "Browsing tool - Rectangle", self.actionBrowse, QPixmap(OWToolbars.dlg_browseRectangle), toggle = 1)
self.buttonBrowseCircle = OWToolbars.createButton(group, "Browsing tool - Circle", self.actionBrowseCircle, QPixmap(OWToolbars.dlg_browseCircle), toggle = 1)
def actionZooming(self):
ZoomSelectToolbar.actionZooming(self)
if 'buttonBrowse' in dir(self): self.buttonBrowse.setOn(0)
if 'buttonBrowseCircle' in dir(self): self.buttonBrowseCircle.setOn(0)
def actionRectangleSelection(self):
ZoomSelectToolbar.actionRectangleSelection(self)
if 'buttonBrowse' in dir(self): self.buttonBrowse.setOn(0)
if 'buttonBrowseCircle' in dir(self): self.buttonBrowseCircle.setOn(0)
def actionPolygonSelection(self):
ZoomSelectToolbar.actionPolygonSelection(self)
if 'buttonBrowse' in dir(self): self.buttonBrowse.setOn(0)
if 'buttonBrowseCircle' in dir(self): self.buttonBrowseCircle.setOn(0)
def actionBrowse(self):
state = self.buttonBrowse.isOn()
self.buttonBrowse.setOn(state)
self.graph.activateBrowsing(state)
if state:
self.buttonBrowseCircle.setOn(0)
self.buttonZoom.setOn(0)
self.buttonSelectRect.setOn(0)
self.buttonSelectPoly.setOn(0)
if self.widget and "toolbarSelection" in self.widget.__dict__.keys(): self.widget.toolbarSelection = 3
self.widget.calcRadius()
else:
self.buttonZoom.setOn(1)
if self.widget and "toolbarSelection" in self.widget.__dict__.keys(): self.widget.toolbarSelection = 0
def actionBrowseCircle(self):
state = self.buttonBrowseCircle.isOn()
self.buttonBrowseCircle.setOn(state)
self.graph.activateBrowsingCircle(state)
if state:
self.buttonBrowse.setOn(0)
self.buttonZoom.setOn(0)
self.buttonSelectRect.setOn(0)
self.buttonSelectPoly.setOn(0)
if self.widget and "toolbarSelection" in self.widget.__dict__.keys(): self.widget.toolbarSelection = 4
self.widget.calcRadius()
else:
self.buttonZoom.setOn(1)
if self.widget and "toolbarSelection" in self.widget.__dict__.keys(): self.widget.toolbarSelection = 0
if __name__=="__main__":
from orngTextCorpus import *
import cPickle
## os.chdir("/home/mkolar/Docs/Diplomski/repository/orange/OrangeWidgets/Other/")
appl = QApplication(sys.argv)
ow = OWCorrAnalysis()
appl.setMainWidget(ow)
ow.show()
## dataset = orange.ExampleTable('/home/mkolar/Docs/Diplomski/repository/orange/doc/datasets/iris.tab')
## lem = lemmatizer.FSALemmatization('/home/mkolar/Docs/Diplomski/repository/orange/OrangeWidgets/TextData/engleski_rjecnik.fsa')
## for word in loadWordSet('/home/mkolar/Docs/Diplomski/repository/orange/OrangeWidgets/TextData/engleski_stoprijeci.txt'):
## lem.stopwords.append(word)
## a = TextCorpusLoader('/home/mkolar/Docs/Diplomski/repository/orange/OrangeWidgets/Other/reuters-exchanges-small.xml', lem = lem)
#a = orange.ExampleTable('../../doc/datasets/smokers_ct.tab')
f=open('../../CDFSallDataCW', 'r')
a =cPickle.load(f)
f.close()
ow.dataset(a)
appl.exec_loop()
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -