plotting in a loop

Hello everyone,

if I read a column file like this (simplified to integers):

0 1 2 3
1 2 3 4
2 3 4 5
3 4 5 6

with: “data = np.loadtxt(“fileName”)”, why can’t I use a for loop inside ipython (started with “-pylab” option) to plot each of the Line2D objects and then draw them on the plot? I am using matplotlib to debug a computational geometry code and I would like these lines to plot paused by the user input so that I can identify when (where) exactly the wrong calculations happen:

import numpy as np

import matplotlib.pyplot as plt

fig1 = plt.figure()

ax1 = fig1.add_subplot(111)

ax1.set_aspect(“equal”)

for line in data:

raw_input(“press enter to plot the line”)

ax1.plot([line[0],line[2]],[line[1],line[3]],‘b’)

plt.draw()

This way I could see with pressing e.g. the return key when my calculations go wrong… any advice?

Hi,

Sorry haven’t used ipython, so not sure if there is another/better
ipython way.

Attached is how I solved it in normal python.

I added a “next line” button to the graph, and set the ydata for the
line each time the button is pushed.

There is a couple of set_ylim lines commented out, depending on the
nature of your data, it might be appropriate to uncomment one of those,
however the set_aspect line may might mean the graph is very tall and
skinny with the supplied data.

Hope that gives you some ideas for your own code.

Steve

testMpl.py (882 Bytes)

···

tomislav_maric@…2537…

Hello
everyone,

if I read a column file like this (simplified to integers):

0 1 2 3

1 2 3 4

2 3 4 5

3 4 5 6

with: “data = np.loadtxt(“fileName”)”, why can’t I use a for loop
inside ipython (started with “-pylab” option) to plot each of the
Line2D objects and then draw them on the plot? I am using matplotlib to
debug a computational geometry code and I would like these lines to
plot paused by the user input so that I can identify when (where)
exactly the wrong calculations happen:

import numpy as np

import matplotlib.pyplot as plt

fig1 = plt.figure()

ax1 = fig1.add_subplot(111)

ax1.set_aspect(“equal”)

for line in data:

raw_input(“press enter to plot
the line”)

ax1.plot([line[0],line[2]],[line[1],line[3]],‘b’)

plt.draw()

This way I could see with pressing
e.g. the return key when my calculations go wrong… any advice?



Download Intel® Parallel Studio Eval
Try the new software tools for yourself. Speed compiling, find bugs
proactively, and fine-tune applications for parallel performance.
See why Intel Parallel Studio got high marks during beta.


Matplotlib-users mailing list
http://p.sf.net/sfu/intel-sw-dev


Matplotlib-users@lists.sourceforge.nethttps://lists.sourceforge.net/lists/listinfo/matplotlib-users