Hello. I'm trying to plot random walk values with an arrow that points the 
lastest value.

Here I attach my code that I made with the help of one of the module's 
great examples! I tested this under Python 3.6(32bit)

*randomWalk function* returns random walk values and *update2 function* 
puts them into a deque named *data3. *

It works well and I can see an arrow that follows the newest value plotting 
on the graph, but whenever I run the program, I see an error that sys:

Traceback (most recent call last): 

File 
"d:\python36-32\lib\site-packages\pyqtgraph\graphicsItems\CurvePoint.py", 
line 64, in event

index = (len(x)-1) * np.clip(pos, 0.0, 1.0)

TypeError: object of type 'NoneType' has no len()

Traceback (most recent call last):

File 
"d:\python36-32\lib\site-packages\pyqtgraph\graphicsItems\CurvePoint.py", 
line 74, in event

i1 = np.clip(index-1, 0, len(x)-1)

TypeError: object of type 'NoneType' has no len()



I guess that the error might stem from the code curvePoint.setPos( 
len(data3) ), but I couldn't find out how to fix it. 

I referred to the manual and Text Item, Arrow examples, but the arrows in 
the examples trace static formulas and I'm having trouble applying it to my 
real-time program.

I'd appreciate it if I could get some help on solving this problem. 

Thank you for reading this.



from collections import deque 

import pyqtgraph as pg

import numpy as np


t = 0

walk = 0


pg.setConfigOption('background', 'w')

pg.setConfigOption('foreground', 'k')


win = pg.GraphicsWindow()

win.setWindowTitle('pyqtgraph example: Scrolling Plots')


win.nextRow()

p3 = win.addPlot()


p3.setDownsampling(mode='peak')

p3.setClipToView(True) 

p3.setRange(xRange=[-10000, 0]) 

p3.setLimits(xMax=0)

curve3 = p3.plot(pen=None, symbol='o', symbolPen=None, symbolSize=2, 
symbolBrush=(102, 000, 000, 255))


curvePoint = pg.CurvePoint(curve3)

arrow2 = pg.ArrowItem(angle=310)

arrow2.setParentItem(curvePoint)


data3 = deque()



def randomWalk():    

       global t, walk

       t = np.random.randint(-1,2)

       walk += t

       return walk


def update2():

       global data3, curvePoint

       data3.append( randomWalk() ) 

       if len(data3) <= 10000:

           curve3.setData(data3)

           curve3.setPos(-10000, 0) 

           curvePoint.setPos( len(data3) ) 

       else:

           data3.popleft()

           curve3.setData(data3)

           curve3.setPos(-10000, 0)

           curvePoint.setPos( len(data3) ) 


def update():

      update2()


timer = pg.QtCore.QTimer()

timer.timeout.connect(update)

timer.start(1)



-- 
You received this message because you are subscribed to the Google Groups 
"pyqtgraph" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/pyqtgraph/819d65af-94b9-477a-ad35-66ace730e472%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to