Re: [Matplotlib-users] Labels in a dynamic graph

2008-03-25 Thread Matthias Michler
Hello Amit,

On Sunday 23 March 2008 09:54, Amit Finkler wrote:
 Hi everyone,


 I am using matplotlib to dynamically plot a graph with both my x and y
 points taken from a measurement device. That is to say, in each
 iteration of my while loop I'm reading two variables which I then want
 to plot with matplotlib.


 I wrote something which goes like this (disregard the Gnuplot - that's
 what I'm trying to replace with matplotlib...)



 import gpib, Numeric, time, Gnuplot, mymodule, threading
 from pylab import *



 def cooldown(filename, dmm_gpib, lake_gpib):

 this program scans dummy and reads HP and Lakeshore

 A = Numeric.arange(-1, 1, .1)
 delay = 1
 f = open(filename,'w')


 X = []
 Y = []
 figure(2)
 hold(False)
 try:
 while A[0]10:

 gpib.write(lake_fd, 'SDAT?')
 gpib.write(hp_fd, 'read?')
 time.sleep(delay)
 val1 = float(gpib.read(lake_fd, 30))
 val2 = float(gpib.read(hp_fd, 30))
 X.append(val1)
 Y.append(val2)
 plot(X,Y,'.-')
 f.write(str(val1) + '\t' + str(val2) + '\n')
 f.flush()

 I'm running this code in ipython with the -pylab option, so I don't need
 to use show(). My question is, how do I maintain a *constant* xlabel and
 ylabel without having to redraw them each time I append a point to the
 graph? If I try xlabel('something') then obviously it's cleared each
 time I use plot(X,Y).

I'm not sure I understand well, but if one uses xlabel(something) before the 
while-loop or just after building the figure, it is not redrawn after 
plotting.

regards
Matthias

-
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse012070mrt/direct/01/
___
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users


Re: [Matplotlib-users] Labels in a dynamic graph

2008-03-25 Thread John Hunter
On Sun, Mar 23, 2008 at 3:54 AM, Amit Finkler [EMAIL PROTECTED] wrote:

 I am using matplotlib to dynamically plot a graph with both my x and y
 points taken from a measurement device. That is to say, in each iteration of
 my while loop I'm reading two variables which I then want to plot with
 matplotlib.

You will want to do something like (this is just a sketch)

xdata = []
ydata = []

fig = figure()
ax = fig.add_subplot(111)
ax.set_xlabel('my xlabel')
ax.set_ylabel('my ylabel')
line, = ax.plot(xdata, ydata)

def add_point(x, y):
xdata.append(x)
ydata.append(y)
if len(xdata)30:  # optional, prune the early points
del xdata[0]
del ydata[0]
xmin = xdata[0]
xmax = xdata[-1]
line.set_data(xdata, ydata)
ax.set_xlim(xmin, xmax)
fig.canvas.draw()

while 1:
x,y = get_data_point()
add_point(x, y)

JDH

-
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse012070mrt/direct/01/
___
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users


Re: [Matplotlib-users] Labels in a dynamic graph

2008-03-25 Thread Amit Finkler


John Hunter wrote:
 On Sun, Mar 23, 2008 at 3:54 AM, Amit Finkler [EMAIL PROTECTED] wrote:

   
 I am using matplotlib to dynamically plot a graph with both my x and y
 points taken from a measurement device. That is to say, in each iteration of
 my while loop I'm reading two variables which I then want to plot with
 matplotlib.
 

 You will want to do something like (this is just a sketch)

 xdata = []
 ydata = []

 fig = figure()
 ax = fig.add_subplot(111)
 ax.set_xlabel('my xlabel')
 ax.set_ylabel('my ylabel')
 line, = ax.plot(xdata, ydata)

 def add_point(x, y):
 xdata.append(x)
 ydata.append(y)
 if len(xdata)30:  # optional, prune the early points
 del xdata[0]
 del ydata[0]
 xmin = xdata[0]
 xmax = xdata[-1]
 line.set_data(xdata, ydata)
 ax.set_xlim(xmin, xmax)
 fig.canvas.draw()

 while 1:
 x,y = get_data_point()
 add_point(x, y)

 JDH
   
John,

Thanks for getting back to me. Indeed this works, at least when I try it
line by line. When I inserted it into my module, it shot back some error
message which goes like this:

  File
/usr/lib/python2.4/site-packages/matplotlib/backends/backend_tkagg.py,
line 154, in draw
FigureCanvasAgg.draw(self)
  File
/usr/lib/python2.4/site-packages/matplotlib/backends/backend_agg.py,
line 392, in draw
self.figure.draw(renderer)
  File /usr/lib/python2.4/site-packages/matplotlib/figure.py, line
544, in draw
for a in self.axes: a.draw(renderer)
  File /usr/lib/python2.4/site-packages/matplotlib/axes.py, line
1004, in draw
try: self.transData.freeze()  # eval the lazy objects
ValueError: Domain error on eval_scalars in Transformation::freeze

Since it did work on the console, i.e., line by line, I think it's only
a matter of resolving my own source code, unless of course you think
otherwise. By the way, isn't there a way to do the set_xlim/ylim
automatically? When I use only figure(), hold(False) and plot(X, Y), it
updates it automatically, so why doesn't it do it with the subplot?

Thanks for your help.

Amit.
-
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse012070mrt/direct/01/___
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users


Re: [Matplotlib-users] Labels in a dynamic graph

2008-03-25 Thread John Hunter
On Tue, Mar 25, 2008 at 11:39 AM, Amit Finkler [EMAIL PROTECTED] wrote:

  I am using matplotlib to dynamically plot a graph with both my x and y
 points taken from a measurement device. That is to say, in each iteration of
 my while loop I'm reading two variables which I then want to plot with
 matplotlib.

Odd, are you using an older version of matplotlib (it works for me).
Try seeding your data with an initial point

xdata = [x]
ydata = [y]

or setting the axis limits before plotting

ax.set_xlim(0,1)
ax.set_ylim(0,1)

Not sure why you are having problems

JDH

-
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse012070mrt/direct/01/
___
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users