Z_designer.py 文件源码

python
阅读 26 收藏 0 点赞 0 评论 0

项目:pslab-desktop-apps 作者: fossasia 项目源码 文件源码
def plotColumns(self):
        selected = self.tbl.selectedRanges()
        x=[]
        y=[]
        xname='' ; yname = ''
        if len(selected)==0:
            self.displayDialog('Please Select at least two columns')
            return

        if len(selected)==1:
            if selected[0].leftColumn() == selected[0].rightColumn():
                self.displayDialog('Please Select at least two columns')
                return
            for a in xrange(selected[0].topRow(), selected[0].bottomRow()+1): x.append(float(self.tbl.item(a,selected[0].leftColumn()).text()))
            for a in xrange(selected[0].topRow(), selected[0].bottomRow()+1): y.append(float(self.tbl.item(a,selected[0].leftColumn()+1).text()))
            xname = str(self.tbl.horizontalHeaderItem(selected[0].leftColumn()).text())
            yname = str(self.tbl.horizontalHeaderItem(selected[0].leftColumn()+1).text())
        elif len(selected)==2:
            for a in xrange(selected[0].topRow(), selected[0].bottomRow()+1): x.append(float(self.tbl.item(a,selected[0].leftColumn()).text()))
            for a in xrange(selected[1].topRow(), selected[1].bottomRow()+1): y.append(float(self.tbl.item(a,selected[1].leftColumn()).text()))
            xname = str(self.tbl.horizontalHeaderItem(selected[0].leftColumn()).text())
            yname = str(self.tbl.horizontalHeaderItem(selected[1].leftColumn()).text())

        msgBox = QtGui.QMessageBox()
        msgBox.setText("Plotting \nxaxis : %s\nyaxis : %s"%(xname, yname))
        msgBox.setStandardButtons(QtGui.QMessageBox.Cancel)
        noRev = msgBox.addButton(self.tr("Plot"), QtGui.QMessageBox.ActionRole)
        rev = msgBox.addButton(self.tr("Swap Axes and plot"), QtGui.QMessageBox.ActionRole)

        ret = msgBox.exec_()
        if msgBox.clickedButton() == rev:
            tmp = y; y=x;x=tmp
            tmp = yname; yname=xname;xname=tmp          
        elif ret == QtGui.QMessageBox.Cancel:
            return



        AllItems = [self.plotList.itemText(i) for i in range(self.plotList.count())]
        num=1
        self.plot.getAxis('bottom').setLabel(xname)
        self.plot.getAxis('left').setLabel(yname)
        name = xname + ' vs ' + yname
        while name+' #'+str(num) in AllItems:
            num+=1
        name = name+' #'+str(num)
        self.eTabs.setCurrentIndex(3) #Switch to plot tab
        curve = self.addCurve(self.plot,name)
        curve.setData(x,y)
        txt='<div style="text-align: center"><span style="color: #FFF;font-size:8pt;">%s</span></div>'%(name)
        text = pg.TextItem(html=txt, anchor=(0,0), border='w', fill=(0, 0, 255, 100))
        self.plot.addItem(text)
        text.setPos(x[-1],y[-1])
        self.plotList.addItem(name)  
        self.curveLabels.append(text)
        self.curves.append(curve)
        self.plot.autoRange()
        self.plot.setXRange(min(x),max(x)*1.3)
        self.plot.setYRange(min(y),max(y)*1.3)
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号