2017-05-04 49 views
0

PyQtgraph Y軸標籤以科學記數法顯示。我不想讓它成爲科學記數法。什麼是將標籤更改爲非科學的代碼。PyQtgraph y軸標籤非科學記數法

enter image description here

科學記數法 - 1.70(X1E + 06)

非科學記數法1700000(我想在非科學記數法來顯示Y軸)。

from main()函數我調用addXYZ添加等高線,然後我調用Show2dPlot顯示等高線圖。

##### add the XY contour line to plot #####  
    def addXYZ(self, X, Y, Z): 
     self.plotwin.plot(X, Y, pen=(255,255,255))#cmap=cm.coolwarm) 


##### Format 2D Plot #####   
    def Show2dPlot(self): 
     self.plotwin.setLogMode(x=False, y=False) 
     self.plotwin.showGrid(x=True, y=True) 
     self.plotwin.setLabel('left', "Easting")# units='A') 
     self.plotwin.setLabel('bottom', "Northing") #, units='s') 
     self.plotwin.setAspectLocked() 
     self.plotwin.set_scientific(False) #I'm getting error in set_scientific 
+0

使用'set_scientific(假)' – RaminNietzsche

+0

@RaminNietzsche我得到NameError,PyQtgraph可能沒有set_scientific。 :( –

+0

你能分享你的代碼的一些部分? – RaminNietzsche

回答

0

PyQtgraph不包含set_scientific(False)。最好的解決方案是重寫AxisItem.tickStrings將有助於創建自定義標籤。

enter image description here

下面是代碼。

import sys 
from pyqtgraph.Qt import QtGui, QtCore 
import pyqtgraph as pg 

##### Override class ##### 
class NonScientific(pg.AxisItem): 
    def __init__(self, *args, **kwargs): 
     super(NonScientific, self).__init__(*args, **kwargs) 

    def tickStrings(self, values, scale, spacing): 
     return [int(value*1) for value in values] #This line return the NonScientific notation value 

class MyApplication(QtGui.QApplication): 
    def __init__(self, *args, **kwargs): 

     self.win = pg.GraphicsWindow(title="Contour plotting") 
     self.win.resize(1000,600) 

     self.plot = self.win.addPlot(title='Contour', axisItems={'left': NonScientific(orientation='left')}) 
     self.curve = self.plot.plot() 


    def PlotContour(self): 
     x = range(50000,60000,10000)#X coordinates of contour 
     y = range(500000,600000,100000)#Y coordinates of contour 
     self.curve.setData(x=x, y=y) 
     self.curve.autoRange() 

def main(): 
    app = MyApplication(sys.argv) 
    sys.exit(app.exec_()) 

if __name__ == '__main__': 
    main()