0
我已經通過添加語句data[:, ::10, :] = 0
來修改ImageView示例,該語句將中間維度的每十個元素都設置爲0.程序現在顯示水平線。這與ImageView.setImage函數的文檔一致:默認軸字典是{'t':0, 'x':1, 'y':2, 'c':3}
。但是,當我將其更改爲{'t':0, 'x':2, 'y':1, 'c':3}
時,我預計不會獲得垂直行。ImageView.setImage軸參數不切換X-Y尺寸
所以我的問題是:如何在PyQtGraph中給出行維度更高的優先級?當然,在將它們傳遞給setImage
函數之前,我可以自己調換所有陣列,但我不想。特別是因爲Numpy和Qt都使用行/列約定而不是Y之前的X.我不明白爲什麼PyQtGraph會選擇後者。
爲了完整起見,請在下面找到我修改的ImageView示例。
import numpy as np
from pyqtgraph.Qt import QtCore, QtGui
import pyqtgraph as pg
app = QtGui.QApplication([])
## Create window with ImageView widget
win = QtGui.QMainWindow()
win.resize(800,800)
imv = pg.ImageView()
win.setCentralWidget(imv)
win.show()
win.setWindowTitle('pyqtgraph example: ImageView')
## Create random 3D data set with noisy signals
img = pg.gaussianFilter(np.random.normal(size=(200, 200)), (5, 5)) * 20 + 100
img = img[np.newaxis,:,:]
decay = np.exp(-np.linspace(0,0.3,100))[:,np.newaxis,np.newaxis]
data = np.random.normal(size=(100, 200, 200))
data += img * decay
data += 2
## Add time-varying signal
sig = np.zeros(data.shape[0])
sig[30:] += np.exp(-np.linspace(1,10, 70))
sig[40:] += np.exp(-np.linspace(1,10, 60))
sig[70:] += np.exp(-np.linspace(1,10, 30))
sig = sig[:,np.newaxis,np.newaxis] * 3
data[:,50:60,50:60] += sig
data[:, ::10, :] = 0 # Make image a-symmetrical
## Display the data and assign each frame a time value from 1.0 to 3.0
imv.setImage(data, xvals=np.linspace(1., 3., data.shape[0]),
axes={'t':0, 'x':2, 'y':1, 'c':3}) # doesn't help
## Start Qt event loop unless running in interactive mode.
if __name__ == '__main__':
import sys
if (sys.flags.interactive != 1) or not hasattr(QtCore, 'PYQT_VERSION'):
QtGui.QApplication.instance().exec_()