2016-09-30 12 views
0

Кто-нибудь знает способ получить это (level curves from matplotlib) используя isocurve от pyqtgraph? Вот мой код ...кривые уровня с pyqtgraph: isocurve

Спасибо!

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

#data creation 
app=QtGui.QApplication([]) 
x = np.linspace(0,6.28,30) 
y = x[:] 
xx,yy = np.meshgrid(x,y) 
z = np.sin(xx)+np.cos(yy) 

win = pg.GraphicsWindow() 
win.setWindowTitle('esempio isocurve') 
vb = win.addViewBox() 
img = pg.ImageItem(z) 
vb.addItem(img) #visualizes img in viewbox vb 
vb.setAspectLocked() #set img proportions (?) 

c = pg.IsocurveItem(data=z,level=2,pen='r') 
c.setParentItem(img) #set img as parent of the isocurve item c (?) 
c.setZValue(10) #I DO NOT KNOW THE MEANING OF THIS, JUST COPIED FROM THE EXAMPLE isocurve.py 

vb.addItem(c) 

win.show() 
sys.exit(app.exec_()) 

ответ

0

[РЕШИТЬ] Я должен был изменить «functions.py» в строке ~ 1500 для того, чтобы избавиться от ошибки

"TypeError: Cannot cast ufunc add output from dtype('int32') to dtype('uint8') with casting rule 'same_kind'". 

Файл «functions.py» находится в C: \ Users \ my_name \ AppData \ Local \ Programs \ Python \ Python35 \ Lib \ site-packages \ pyqtgraph (поисковая система Windows не нашла его, так как он находился внутри скрытой папки!). Вот модификация предложенная this Google Group:

index += (fields[i,j] * 2**vertIndex) 

становится

index += (fields[i,j] * 2**vertIndex).astype(np.ubyte). 

В моем коде, я должен был установить

level=0 

вместо

level=2 

как 2 было больше, чем ma минимальное значение z. Другими словами, я пытался нарисовать кривую уровня 2000 м для высоты 1500 м. Всегда помните, чтобы обеспечить соответствующий уровень !!! Here's the correct output (-.- ')