2017-05-04 23 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()