2017-11-26 10 views
1

私は軸ラベルをすべて小数点を持つようにしようとしています。下の図を参照してください。Pyqtgraph力軸のラベルに小数点をつける

enter image description here

あなたは値が整数であるときは常にx軸に、それはもはや小数を表示することがわかりませんよ。私は "1.0"を読むために "1"を希望します。

私はプロットスタイルを設定しています。これは、可能な場合は、この

のようなものPlotstyle1

def set_plotstyle(p1, style): 
    if style == 1: 
     axlabel_font = QtGui.QFont() 
     axlabel_font.setPixelSize(20) 

     p1.showAxis('right') 
     p1.showAxis('top') 

     p1.showLabel('right', show=False) 
     p1.showLabel('top', show=False) 

     p1.showGrid(x=False, y=False) 
     p1.setLogMode(x=False, y=False) 
     p1.getAxis('left').tickFont = axlabel_font 
     p1.getAxis('bottom').tickFont = axlabel_font 
     p1.getAxis('left').labelFont = axlabel_font 
     p1.getAxis('bottom').setHeight(70) 
     p1.getAxis('left').setWidth(100) 
     p1.getAxis('right').setWidth(60) 
     p1.getAxis('left').setStyle(tickTextOffset=15) 
     p1.getAxis('bottom').setStyle(tickTextOffset=15) 
     p1.getAxis('top').setStyle(showValues=False) 
     p1.getAxis('right').setStyle(showValues=False) 

を読み、私は、このメソッド内でこの機能を設定したいと思います。ありがとう!

答えて

1

xとyの値を小数点以下1桁で表示するサンプルコードを見てください。 set_plotstyleメソッドを変更して、プロットされているxとyの値も受け入れるようにしました。これはまさにあなたが求めているものではありませんが、それが助けてくれることを願っています。

xとyの値は、setTicksを使用してティック値に割り当てられた書式設定された文字列に変換されます。小数点以下1桁の文字列書式コマンドは.1fです。値がプロットに重ならないように、私はあなたのset_plotstyle方法でフォントサイズを縮小

PyQtGraph - How to set intervals of axis

:アイデアと例のコードは、このstackoverflowの答えに基づいています。

これは、Jupyterノートブックを使用してLinux MintでPython 3.6を使用してテストされています。 Jupyterノートブックを使用している場合は、%guiインラインマジックを使用してプロットを表示してください。

import pyqtgraph as pg 
import numpy as np 
from pyqtgraph.Qt import QtCore, QtGui 

def set_plotstyle(p1, x_vals, y_vals, style): 
    if style == 1: 
     axlabel_font = QtGui.QFont() 
     axlabel_font.setPixelSize(15) 

     p1.showAxis('right') 
     p1.showAxis('top') 

     p1.showLabel('right', show=False) 
     p1.showLabel('top', show=False) 

     p1.showGrid(x=False, y=False) 
     p1.setLogMode(x=False, y=False) 
     p1.getAxis('left').tickFont = axlabel_font 
     p1.getAxis('bottom').tickFont = axlabel_font 
     p1.getAxis('left').labelFont = axlabel_font 
     p1.getAxis('bottom').setHeight(70) 
     p1.getAxis('left').setWidth(100) 
     p1.getAxis('right').setWidth(60) 
     p1.getAxis('left').setStyle(tickTextOffset=15) 
     p1.getAxis('bottom').setStyle(tickTextOffset=15) 
     p1.getAxis('top').setStyle(showValues=False) 
     p1.getAxis('right').setStyle(showValues=False) 

     ax = p1.getAxis('bottom') 
     dx = [(value, '{:.1f}'.format(value)) for value in x_vals] 
     ax.setTicks([dx, []]) 

     ay = p1.getAxis('left') 
     dy = [(value, '{:.1f}'.format(value)) for value in y_vals] 
     ay.setTicks([dy, []]) 
    return p1 

app = pg.mkQApp() 

pw = pg.PlotWidget(title="Example") 
x = np.arange(7) 
y = x**2/150 
pw.plot(x=x, y=y, symbol='o') 
pw.show() 
pw.setWindowTitle('Example') 
set_plotstyle(pw, x, y, 1) 


if __name__ == '__main__': 
    import sys 

    if (sys.flags.interactive != 1) or not hasattr(QtCore, 'PYQT_VERSION'): 
    QtGui.QApplication.instance().exec_() 
関連する問題