2015-06-21 1 views
0

Я изменил пример ImageView, добавив оператор data[:, ::10, :] = 0, который устанавливает каждый десятый элемент среднего измерения равным 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 используют соглашение строки/столбца, а не X до Y. Я не понимаю, почему 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_() 

ответ

1

Глядя через ImageView.py, setImage() разбирает оси словаря и на основе присутствия «т» он строит ползунок ось г/кадра, и это все. Перестановка осей кажется не реализовано еще.

Смежные вопросы