[Matplotlib-users] Non-interactive plotting to window?

2011-12-15 Thread John Thorstensen

I have a sizeable number of python data-inspection scripts that work as
follows:

- read some data, or do something with it
- plot the data
- query the user on the command line and get a response
- do what the user commands.

These use the venerable PGPLOT package for the graphics, but this has been
static for years and is getting increasingly vulnerable to obsolescence of
the supporting packages (e.g., numarray).

I'm having a hard time converting these scripts to matplotlib because when
you do a show(), the mainloop takes over.  It's possible to work around by
doing a show() for every plot, and then killing the plot manually, but after
a couple of hundred manual kills this gets tiresome.  It would also be
possible to restructure the code so that the various options get controlled
by key press events in the plot, I suppose, but the effort involved in
converting all the scripts would be pretty large.

So my question:  Is there a simple way of getting matplotlib to display a
plot in a window and then surrender control to the main program, without
destroying the plot?  Something like a method to kill mainloop would be
ideal.  

Thanks.

[Apologies if this is general knowledge -- I couldn't find an answer.]
-- 
View this message in context: 
http://old.nabble.com/Non-interactive-plotting-to-window--tp32981792p32981792.html
Sent from the matplotlib - users mailing list archive at Nabble.com.


--
10 Tips for Better Server Consolidation
Server virtualization is being driven by many needs.  
But none more important than the need to reduce IT complexity 
while improving strategic productivity.  Learn More! 
http://www.accelacomm.com/jaw/sdnl/114/51507609/
___
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users


[Matplotlib-users] plotting 3D

2011-12-15 Thread Martella, C.
Hello,

I have 2D array where each (x, y) cell represents the height of that point on 
the Z axis (you can think of it as the map of some mountain chain). 
I'd like to get the plot_surface() of this data. What I don't understand in 
particular is the content of the X, Y ,Z array parameter in my particular 
example.

Can anybody elaborate on this please?

Thanks!
Claudio

--
Claudio Martella
claudio.marte...@vu.nl





--
10 Tips for Better Server Consolidation
Server virtualization is being driven by many needs.  
But none more important than the need to reduce IT complexity 
while improving strategic productivity.  Learn More! 
http://www.accelacomm.com/jaw/sdnl/114/51507609/
___
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users


Re: [Matplotlib-users] Incorrect latex rendering for \hat{x} and \vec{x}

2011-12-15 Thread Peter Liebetraut
Hi

Latex rendering looks OK here.

 In [9]: matplotlib.__version__
 Out[9]: '1.0.0'

However, synaptic tells me: 1.0.1-rc1-1ubuntu5.
System Ubuntu 10.10 with ppa
(http://ppa.launchpad.net/bgamari/matplotlib-unofficial/ubuntu) for
matplotlib 1.0.1.

Best,
Peter


Am 07.12.2011 23:06, schrieb Alejandro Weinstein:
 Hi:
 
 I am getting incorrect renderings when using \hat{x} or \vec{x}. The
 following code
 
 #
 import matplotlib.pylab as plt
 
 plt.axes([0.1, 0.15, 0.8, 0.75])
 plt.plot(range(10))
 
 plt.xlabel(r'$\hat{y}$  $\vec{x}$ $x^2 + y^2$', fontsize=20)
 plt.show()
 #
 
 produce the attached plot. Note that the hat and the arrow are in
 the wrong place. The other Latex part looks OK.
 
 I am running version 1.2.x (built from commit
 11e528425e230a3e23d04202aea23d88d40d9c4c) and Ubuntu 11.10.
 
 Any ideas about how to solve the problem?
 
 Alejandro.
 

--
10 Tips for Better Server Consolidation
Server virtualization is being driven by many needs.  
But none more important than the need to reduce IT complexity 
while improving strategic productivity.  Learn More! 
http://www.accelacomm.com/jaw/sdnl/114/51507609/
___
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users


Re: [Matplotlib-users] plotting 3D

2011-12-15 Thread Benjamin Root
On Tue, Dec 13, 2011 at 1:12 PM, Martella, C. c.marte...@vu.nl wrote:

 Hello,

 I have 2D array where each (x, y) cell represents the height of that point
 on the Z axis (you can think of it as the map of some mountain chain).
 I'd like to get the plot_surface() of this data. What I don't understand
 in particular is the content of the X, Y ,Z array parameter in my
 particular example.

 Can anybody elaborate on this please?


Claudio,

X and Y represent the coordinates of the height data (which is Z). X and Y
must be the same shape as the Z data.  For example:

# Create 1-D coordinate arrays
x = np.arange(-10, 10, 0.5) # length 40
y = np.arange(-25, 25, 2.5) # length 20

# Create 2-D arrays from the coordinate arrays
# The shape of X and Y will be (20, 40)
# i.e., 20 rows and 40 columns.
X, Y = np.meshgrid(x, y)

# This will also have shape of (20, 40)
Z = np.sqrt(X**2 + Y**2)

ax.plot_surface(X, Y, Z)

Now, a more complicated example shows that the X and Y coordinates do not
have to be monotonic, but the coordinates must be neighboring in both
euclidean space and in the data array, or else the surface will look
torn.  This example on the website shows how to plot a sphere by using a
parametric representation of the surface:

http://matplotlib.sourceforge.net/examples/mplot3d/surface3d_demo2.html

I hope this helps!
Ben Root
--
10 Tips for Better Server Consolidation
Server virtualization is being driven by many needs.  
But none more important than the need to reduce IT complexity 
while improving strategic productivity.  Learn More! 
http://www.accelacomm.com/jaw/sdnl/114/51507609/___
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users


Re: [Matplotlib-users] Matplotlib-users Digest, Vol 67, Issue 23

2011-12-15 Thread David Hoese
Eric,

I installed mpl from git (git clone 
git://github.com/matplotlib/matplotlib.git, unless I was suppose to use 
one of the branches) and same problem.  I looked at my code again and 
thought there should be a canvas.draw() before calling 
c.copy_from_bbox(a.bbox), but still the same problem.  However, I did 
have it work the first time I added c.draw() and used the git mpl, and 
by work I mean that everything stayed visible on the figure.

When people start coming in to my work I'll ask them to run my sample 
code and see what happens.  It almost seems like mpl is handling the 
window activation event funny, is there an easy way to print out the 
callbacks being used by a mpl figure?  For now, I will subclass 
QApplication, and implement notify() to print out events as they come 
in, but still...this is just weird.  Thanks.

-Dave

On 12/14/11 10:30 PM, Eric Firing wrote:
 David,

 It works for me on linux with mpl from git.  I haven't tried to figure
 it out, but it is conceivable that the problem you are seeing was fixed
 with this:

 commit b624546ae60dc5878e75a32f41a160d383548b8f
 Author: Eric Firingefir...@hawaii.edu
 Date:   Tue Oct 18 08:06:21 2011 -1000

   backend_qt4agg: draw() immediately calls FigureCanvasAgg.draw()

   This is the latest in a series of modifications to the Qt4Agg
   drawing strategy going back several years.  It simplifies the
   code and should solve the problem introduced in 6938b0025; that
   is, delaying the Agg draw operation until the paintEvent breaks
   code expecting that draw operation to have occurred immediately.
   The problem was reported here:
   http://sourceforge.net/mailarchive/message.php?msg_id=28245744

 Eric


--
10 Tips for Better Server Consolidation
Server virtualization is being driven by many needs.  
But none more important than the need to reduce IT complexity 
while improving strategic productivity.  Learn More! 
http://www.accelacomm.com/jaw/sdnl/114/51507609/
___
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users


Re: [Matplotlib-users] Blitting with qt4

2011-12-15 Thread David Hoese
Oops forgot to change subject.

On 12/15/11 10:02 AM, David Hoese wrote:
 Eric,

 I installed mpl from git (git clone 
 git://github.com/matplotlib/matplotlib.git, unless I was suppose to 
 use one of the branches) and same problem.  I looked at my code again 
 and thought there should be a canvas.draw() before calling 
 c.copy_from_bbox(a.bbox), but still the same problem.  However, I 
 did have it work the first time I added c.draw() and used the git 
 mpl, and by work I mean that everything stayed visible on the figure.

 When people start coming in to my work I'll ask them to run my sample 
 code and see what happens.  It almost seems like mpl is handling the 
 window activation event funny, is there an easy way to print out the 
 callbacks being used by a mpl figure?  For now, I will subclass 
 QApplication, and implement notify() to print out events as they 
 come in, but still...this is just weird.  Thanks.

 -Dave

 On 12/14/11 10:30 PM, Eric Firing wrote:
 David,

 It works for me on linux with mpl from git.  I haven't tried to figure
 it out, but it is conceivable that the problem you are seeing was fixed
 with this:

 commit b624546ae60dc5878e75a32f41a160d383548b8f
 Author: Eric Firingefir...@hawaii.edu
 Date:   Tue Oct 18 08:06:21 2011 -1000

   backend_qt4agg: draw() immediately calls FigureCanvasAgg.draw()

   This is the latest in a series of modifications to the Qt4Agg
   drawing strategy going back several years.  It simplifies the
   code and should solve the problem introduced in 6938b0025; that
   is, delaying the Agg draw operation until the paintEvent breaks
   code expecting that draw operation to have occurred immediately.
   The problem was reported here:
   http://sourceforge.net/mailarchive/message.php?msg_id=28245744

 Eric



--
10 Tips for Better Server Consolidation
Server virtualization is being driven by many needs.  
But none more important than the need to reduce IT complexity 
while improving strategic productivity.  Learn More! 
http://www.accelacomm.com/jaw/sdnl/114/51507609/
___
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users


Re: [Matplotlib-users] my pie charts gotta pop!

2011-12-15 Thread Benjamin Root
On Wed, Dec 14, 2011 at 11:34 PM, Benjamin Root ben.r...@ou.edu wrote:



 On Wednesday, December 14, 2011, Jason Grout jason-s...@creativetrax.com
 wrote:
  On 12/14/11 6:33 PM, Justin wrote:
 
  Any suggestions or places to find a gorgeous pie chart, let me know...
 
  I'd probably use Excel or OpenOffice if I were you.
 
  Jason
 

 There are some neat effects that can be done with the AGG filter.  There
 should be a page about AGG filters on the website.

 As for text placement, if it is just a one-off figure, you could
 explicitly code the placement yourself.  It is always hard to judge when to
 get the general solution, and when to hack out the one-offs.

 Ben Root


The page I was referring to:

http://matplotlib.sourceforge.net/examples/pylab_examples/demo_agg_filter.html

I could have sworn there was another page that talks about agg filters in
further details, but I can't seem to find it.

Ben Root
--
10 Tips for Better Server Consolidation
Server virtualization is being driven by many needs.  
But none more important than the need to reduce IT complexity 
while improving strategic productivity.  Learn More! 
http://www.accelacomm.com/jaw/sdnl/114/51507609/___
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users


Re: [Matplotlib-users] Blitting with qt4

2011-12-15 Thread David Hoese
Eric,

Good news I think I got it to work.  So using the same code I sent you 
originally, I applied the following changes:
1. Install matplotlib from git (this did fix things that I wasn't noticing)
2. Add c.draw() before c.copy_from_bbox
3. Copy f.bbox instead of a.bbox (I think this makes sense since I 
want it to hold on to the title,ticks, and labels, a.bbox is only the 
content inside the axis rectangle)
4. Restore f_bbox, blit f.bbox.

...and it seems to work.  The git version of mpl did fix this, although 
restoring just the a.bbox was only keeping the axis rectangle so it made 
it look like even worse of a bug.  Using the new version I noticed this 
and then started using f.bbox which seems to work the way I want it.

Now, my final question is: Is this actually doing what I want 
performance-wise.  When I blit just f.bbox, is it really only repainting 
the updated line or is it redrawing most of the figure?  If you need a 
copy of the new version of my test code let me know.  Thanks for any 
more clarity/help you can give.

-Dave

P.S. Is there a book or tutorial or website where I can learn more about 
how the rendering/painting of stuff like this works.  For example, if I 
could better understand why your bug fix was needed.

On 12/15/11 10:04 AM, David Hoese wrote:
 Oops forgot to change subject.

 On 12/15/11 10:02 AM, David Hoese wrote:
 Eric,

 I installed mpl from git (git clone 
 git://github.com/matplotlib/matplotlib.git, unless I was suppose to 
 use one of the branches) and same problem.  I looked at my code again 
 and thought there should be a canvas.draw() before calling 
 c.copy_from_bbox(a.bbox), but still the same problem.  However, I 
 did have it work the first time I added c.draw() and used the git 
 mpl, and by work I mean that everything stayed visible on the figure.

 When people start coming in to my work I'll ask them to run my sample 
 code and see what happens.  It almost seems like mpl is handling the 
 window activation event funny, is there an easy way to print out the 
 callbacks being used by a mpl figure?  For now, I will subclass 
 QApplication, and implement notify() to print out events as they 
 come in, but still...this is just weird.  Thanks.

 -Dave

 On 12/14/11 10:30 PM, Eric Firing wrote:
 David,

 It works for me on linux with mpl from git.  I haven't tried to figure
 it out, but it is conceivable that the problem you are seeing was fixed
 with this:

 commit b624546ae60dc5878e75a32f41a160d383548b8f
 Author: Eric Firingefir...@hawaii.edu
 Date:   Tue Oct 18 08:06:21 2011 -1000

   backend_qt4agg: draw() immediately calls FigureCanvasAgg.draw()

   This is the latest in a series of modifications to the Qt4Agg
   drawing strategy going back several years.  It simplifies the
   code and should solve the problem introduced in 6938b0025; that
   is, delaying the Agg draw operation until the paintEvent breaks
   code expecting that draw operation to have occurred immediately.
   The problem was reported here:
   http://sourceforge.net/mailarchive/message.php?msg_id=28245744

 Eric




--
10 Tips for Better Server Consolidation
Server virtualization is being driven by many needs.  
But none more important than the need to reduce IT complexity 
while improving strategic productivity.  Learn More! 
http://www.accelacomm.com/jaw/sdnl/114/51507609/
___
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users


[Matplotlib-users] how to surpress figure pop out within interactive ipython shell?

2011-12-15 Thread Chao YUE
Dear matplotlib users,

How can I surpress the figure pop out when I make plot within the ipython
interactive shell?
suppose I make a figure first and I want to save it:

fig=plt.figure()
ax=fig.add_subplot(111)
ax.plot(np.arange(10))
fig.savefig('fig1.png')
###actually above is only an example and usually I use loop to make many
figures.

then I want to check another plot:

plt.plot(np.arange(10))
plt.show()

The problem is, when I use plt.show() to check the recently made plot, all
the figures I saved for the last session will pop out and I have to click
on the close icon to close them one by one,
which can be really annoying

any idea would be greatly appreciated!

cheers,

Chao
-- 
***
Chao YUE
Laboratoire des Sciences du Climat et de l'Environnement (LSCE-IPSL)
UMR 1572 CEA-CNRS-UVSQ
Batiment 712 - Pe 119
91191 GIF Sur YVETTE Cedex
Tel: (33) 01 69 08 29 02; Fax:01.69.08.77.16

--
10 Tips for Better Server Consolidation
Server virtualization is being driven by many needs.  
But none more important than the need to reduce IT complexity 
while improving strategic productivity.  Learn More! 
http://www.accelacomm.com/jaw/sdnl/114/51507609/___
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users


Re: [Matplotlib-users] how to surpress figure pop out within interactive ipython shell?

2011-12-15 Thread Justin McCann
On Thu, Dec 15, 2011 at 12:33 PM, Chao YUE chaoyue...@gmail.com wrote:

 Dear matplotlib users,

 How can I surpress the figure pop out when I make plot within the ipython
 interactive shell?
 suppose I make a figure first and I want to save it:

 fig=plt.figure()
 ax=fig.add_subplot(111)
 ax.plot(np.arange(10))
 fig.savefig('fig1.png')
 ###actually above is only an example and usually I use loop to make many
 figures.


Try adding 'plt.close(fig)' after you save the figure, or just plt.close()
if you want to close everything.
--
10 Tips for Better Server Consolidation
Server virtualization is being driven by many needs.  
But none more important than the need to reduce IT complexity 
while improving strategic productivity.  Learn More! 
http://www.accelacomm.com/jaw/sdnl/114/51507609/___
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users


Re: [Matplotlib-users] Incorrect latex rendering for \hat{x} and \vec{x}

2011-12-15 Thread Alejandro Weinstein
On Wed, Dec 14, 2011 at 10:20 AM, Peter Liebetraut
peter.liebetr...@imtek.uni-freiburg.de wrote:
 Hi

 Latex rendering looks OK here.

 In [9]: matplotlib.__version__
 Out[9]: '1.0.0'

Just updated to the last version from github, and now works OK.

--
10 Tips for Better Server Consolidation
Server virtualization is being driven by many needs.  
But none more important than the need to reduce IT complexity 
while improving strategic productivity.  Learn More! 
http://www.accelacomm.com/jaw/sdnl/114/51507609/
___
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users


Re: [Matplotlib-users] Endpoint of a text string in a plot?

2011-12-15 Thread Keld Lundgaard

Thank you Benjamin.

Yes, I understand the problem.

Thank you for the help. I am able to use Annotate for my specific problem: I
want to have a line starting from the end of the text to make the tick
labels with a left alignment.
However, a feature to get the boundary box would be useful for this, to
ensure that the plot is tight.  

Best regards 

Keld


Benjamin Root-2 wrote:
 
 On Wednesday, December 14, 2011, Keld Lundgaard keld.lundga...@gmail.com
 wrote:

 Hi

 How do I get the information about the endpoint of a text element?

 Example:

 import matplotlib.pylab as plt
 text = plt.text(0.5,0.5,'hi')
 plt.show()

 In the dataTrans coordinates, where does the text string ends?


 I have spent some time now trying to solve this, seemingly simple
 problem,
 so I appreciate any help a lot!


 Thanks in advance!

 / Keld
 
 It is actually a very difficult thing to do, and is why mpl does not
 provide a mechanism to find out until after rendering.  The problem is
 that
 -- in the general case -- it is not possible to know ahead of time how
 much
 space some text will take up for an arbitrary font, style and size.
 
 You can have the figure get rendered, and then you can query the text's
 bounding box, if I understand correctly.  Maybe the code for
 tight_layout()
 might show how it does this.
 
 Ben Root
 
 --
 10 Tips for Better Server Consolidation
 Server virtualization is being driven by many needs.  
 But none more important than the need to reduce IT complexity 
 while improving strategic productivity.  Learn More! 
 http://www.accelacomm.com/jaw/sdnl/114/51507609/
 ___
 Matplotlib-users mailing list
 Matplotlib-users@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/matplotlib-users
 
 

-- 
View this message in context: 
http://old.nabble.com/Endpoint-of-a-text-string-in-a-plot--tp32977548p32983153.html
Sent from the matplotlib - users mailing list archive at Nabble.com.


--
10 Tips for Better Server Consolidation
Server virtualization is being driven by many needs.  
But none more important than the need to reduce IT complexity 
while improving strategic productivity.  Learn More! 
http://www.accelacomm.com/jaw/sdnl/114/51507609/
___
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users


Re: [Matplotlib-users] Non-interactive plotting to window?

2011-12-15 Thread Goyo
2011/12/15 John Thorstensen john.thorsten...@dartmouth.edu:

 So my question:  Is there a simple way of getting matplotlib to display a
 plot in a window and then surrender control to the main program, without
 destroying the plot?  Something like a method to kill mainloop would be
 ideal.

Just make sure you use interactive mode and get rid of the show calls:

import matplotlib.pyplot as plt
plt.ion()  # set interactive mode
plt.plot(foo)  # plot something
bar()  # do stuff while the plot is visible
plt.close()  # if you want to close the plot window from the script

This works in mpl 1.1.0 al least with tkagg, gtkagg and qt4agg backends.

Goyo

--
10 Tips for Better Server Consolidation
Server virtualization is being driven by many needs.  
But none more important than the need to reduce IT complexity 
while improving strategic productivity.  Learn More! 
http://www.accelacomm.com/jaw/sdnl/114/51507609/
___
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users


[Matplotlib-users] How can I place a table on a plot in Matplotlib?

2011-12-15 Thread David Grudoski
I'm not having any success in getting the matplotlib table commands to work. 
Here's an example of what I'd like to do:

Can anyone help with the table construction code? Thanks

import pylab as plt

plt.figure()
ax=plt.gca()
y=[1,2,3,4,5,4,3,2,1,1,1,1,1,1,1,1]
plt.plot([10,10,14,14,10],[2,4,4,2,2],'r')
col_labels=['col1','col2','col3']
row_labels=['row1','row2','row3']
table_vals=[11,12,13,21,22,23,31,32,33]
# the rectangle is where I want to place the table
plt.text(11,4.1,'Table Title',size=8)
plt.plot(y)
plt.show()

--
10 Tips for Better Server Consolidation
Server virtualization is being driven by many needs.  
But none more important than the need to reduce IT complexity 
while improving strategic productivity.  Learn More! 
http://www.accelacomm.com/jaw/sdnl/114/51507609/___
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users


Re: [Matplotlib-users] Plot Fill with Jacobian Coordinates

2011-12-15 Thread Alex Naysmith
On Tue, Dec 13, 2011 at 7:12 PM, Alex Naysmith yeoman.pyt...@gmail.comwrote:



 On Mon, Dec 12, 2011 at 7:03 PM, Benjamin Root ben.r...@ou.edu wrote:

 On Sat, Dec 10, 2011 at 10:36 AM, Alex Naysmith 
 yeoman.pyt...@gmail.comwrote:

 Hello,

 I'm trying to plot the stresses in colour of a strained isoparametric
 element.

 I have a six noded triangle with vertice coordinates
 [(xa1,ya1),(xa2,ya2),(xa3,ya3)] = pos_a

 This triangle deforms and the new coordinate positions are
 [(xb1,yb1),(xa2,yb2),(xb3,yb3)] = pos_b

 The remaining nodes are mid nodes also with rest and deformed coordinate
 positions.

 To plot the edges of the triangle I use a Jacobian transformation
 function so that the coordinates of the triangle are in Jacobian
 coordinates xi1 and xi2 (with xi3 = 1 - xi1 - xi2). This is required as the
 elements are quadratic with mid-nodes.

 Each interval is hard coded so that:
 xi1 = [1.0,0.9,0.8,0.7,0.6,0.5, etc..]
 xi2 = [0.0,0.1,0.2,0.3,0.4,0.5, etc..]

 I would like to plot the strains in colour so that the interior of the
 triangle is filled but I don't want to hard code the Jacobian intervals as
 this seems an awkward way of doing it.

 With strain as a function of xi1 and xi2, How can matplotlib provide a
 continuous interior strain plot of the triangle for all the xi1 and xi2
 values from 0 to 1?

 Regards

 Alex Naysmith


 Alex,

 Perhaps if you can provide an example figure, we might be able to better
 help you.  Right now, I am having trouble envisioning what you describe.

 Ben Root

 Ben,

 I have created a script that uses one isoparametric triangle as an
 example. The triangle nodes undergo a displacement, resulting in strains
 inside the triangle. The new script calculates the strains inside the
 triangle for a range of xi1 and xi2 barycentric coordinates and returns the
 global coordinates with the corresponding strain.

 I would like matplotlib to give me a nice interpolated colour plot of the
 strains inside the triangle, but as the output global coordinates are not
 aligned in neat rows and columns, I cannot do a straightforward meshgrid
 plot with imshow.

 http://bazaar.launchpad.net/~eckeroo/misc/mpl_scripts/files

 There are further comments in the script that may explain things better.

 I want a figure like this:

 http://matplotlib.sourceforge.net/examples/pylab_examples/animation_demo.html
 But for a 6 noded quadratic triangle instead of square. The intention is
 to have all the triangles in the mesh display their strains with
 interpolated colours.

 Regards

 Alex


Hello,

I tried using contour and now I have a figure!

 http://bazaar.launchpad.net/~eckeroo/misc/mpl_scripts/view/head:/figure.png

I can now show clearly what I'm aiming for with this figure. I want the
contour fill to remain inside the triangle. There will be a whole mesh of
triangles to fill.

The updated sample script is here:

http://bazaar.launchpad.net/~eckeroo/misc/mpl_scripts/view/head:/triangle_fill_v2.py

I arranged my data points into square X and Y arrays along with the strains
in the Z array and then simply P.contourf(X, Y, Z)

As the figure shows, it's not there yet as a couple of the corners aren't
filled in and there's a big fill outside the triangle. I think this is due
to difficulties in translating points from the natural triangle coordinates
(barycentric) to the x,y coordinates. But the contour looks correct as it's
interpolated between the strain points.

Regards

Alex
--
10 Tips for Better Server Consolidation
Server virtualization is being driven by many needs.  
But none more important than the need to reduce IT complexity 
while improving strategic productivity.  Learn More! 
http://www.accelacomm.com/jaw/sdnl/114/51507609/___
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users


Re: [Matplotlib-users] Plot Fill with Jacobian Coordinates

2011-12-15 Thread Benjamin Root
On Thu, Dec 15, 2011 at 3:18 PM, Alex Naysmith yeoman.pyt...@gmail.comwrote:



 On Tue, Dec 13, 2011 at 7:12 PM, Alex Naysmith yeoman.pyt...@gmail.comwrote:



 On Mon, Dec 12, 2011 at 7:03 PM, Benjamin Root ben.r...@ou.edu wrote:

 On Sat, Dec 10, 2011 at 10:36 AM, Alex Naysmith yeoman.pyt...@gmail.com
  wrote:

 Hello,

 I'm trying to plot the stresses in colour of a strained isoparametric
 element.

 I have a six noded triangle with vertice coordinates
 [(xa1,ya1),(xa2,ya2),(xa3,ya3)] = pos_a

 This triangle deforms and the new coordinate positions are
 [(xb1,yb1),(xa2,yb2),(xb3,yb3)] = pos_b

 The remaining nodes are mid nodes also with rest and deformed
 coordinate positions.

 To plot the edges of the triangle I use a Jacobian transformation
 function so that the coordinates of the triangle are in Jacobian
 coordinates xi1 and xi2 (with xi3 = 1 - xi1 - xi2). This is required as the
 elements are quadratic with mid-nodes.

 Each interval is hard coded so that:
 xi1 = [1.0,0.9,0.8,0.7,0.6,0.5, etc..]
 xi2 = [0.0,0.1,0.2,0.3,0.4,0.5, etc..]

 I would like to plot the strains in colour so that the interior of the
 triangle is filled but I don't want to hard code the Jacobian intervals as
 this seems an awkward way of doing it.

 With strain as a function of xi1 and xi2, How can matplotlib provide a
 continuous interior strain plot of the triangle for all the xi1 and xi2
 values from 0 to 1?

 Regards

 Alex Naysmith


 Alex,

 Perhaps if you can provide an example figure, we might be able to better
 help you.  Right now, I am having trouble envisioning what you describe.

 Ben Root

 Ben,

 I have created a script that uses one isoparametric triangle as an
 example. The triangle nodes undergo a displacement, resulting in strains
 inside the triangle. The new script calculates the strains inside the
 triangle for a range of xi1 and xi2 barycentric coordinates and returns the
 global coordinates with the corresponding strain.

 I would like matplotlib to give me a nice interpolated colour plot of the
 strains inside the triangle, but as the output global coordinates are not
 aligned in neat rows and columns, I cannot do a straightforward meshgrid
 plot with imshow.

 http://bazaar.launchpad.net/~eckeroo/misc/mpl_scripts/files

 There are further comments in the script that may explain things better.

 I want a figure like this:

 http://matplotlib.sourceforge.net/examples/pylab_examples/animation_demo.html
 But for a 6 noded quadratic triangle instead of square. The intention is
 to have all the triangles in the mesh display their strains with
 interpolated colours.

 Regards

 Alex


 Hello,

 I tried using contour and now I have a figure!


 http://bazaar.launchpad.net/~eckeroo/misc/mpl_scripts/view/head:/figure.png

 I can now show clearly what I'm aiming for with this figure. I want the
 contour fill to remain inside the triangle. There will be a whole mesh of
 triangles to fill.

 The updated sample script is here:


 http://bazaar.launchpad.net/~eckeroo/misc/mpl_scripts/view/head:/triangle_fill_v2.py

 I arranged my data points into square X and Y arrays along with the
 strains in the Z array and then simply P.contourf(X, Y, Z)

 As the figure shows, it's not there yet as a couple of the corners aren't
 filled in and there's a big fill outside the triangle. I think this is due
 to difficulties in translating points from the natural triangle coordinates
 (barycentric) to the x,y coordinates. But the contour looks correct as it's
 interpolated between the strain points.

 Regards

 Alex


Alex,

Just curious, have you checked to see if tricontourf() meets your needs?

http://matplotlib.sourceforge.net/api/axes_api.html?highlight=tricontourf#matplotlib.axes.Axes.tricontourf

Ben Root
--
10 Tips for Better Server Consolidation
Server virtualization is being driven by many needs.  
But none more important than the need to reduce IT complexity 
while improving strategic productivity.  Learn More! 
http://www.accelacomm.com/jaw/sdnl/114/51507609/___
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users


Re: [Matplotlib-users] How to do million data-point plots with Matplotlib?

2011-12-15 Thread Michael Droettboom
On 12/10/2011 01:12 PM, David Smith wrote:
 I have been working on a program that uses Matplotlib to plot data
 consisting of around one million points.  Sometimes the plots succeed but
 often I get an exception: OverFlowError: Agg rendering complexity exceeded.
Are you sure path simplification is running?  (i.e. the rcParam 
path.simplify is True)?  That generally does a good job of removing 
excess points on the fly.  You shouldn't need a development version for 
this to work.  0.99.x or later should be adequate.  You're not going to 
see a million points at typical screen resolutions anyway.

 I can make this message go away by plotting the data in chunks as
 illustrated in the demo code below.  However, the extra code is a chore
 which I don't think should be necessary - I hope the developers will
 be able to fix this issue sometime soon.  I know that the development
 version has some modifications to addressing this issue.  I wonder if it is
 expected to make the problem go away?

 By the way, this plot takes about 30 seconds to render on my I7 2600k.
 The main program reaches the show() statement quickly and prints
 Done plotting?.   Then I see that the program reaches 100% usage
 on one CPU core (4 real, 8 virtual on the 2600k) until the plot is
 displayed.  I wonder if there is any way to persuade Matplotlib to run
 some of the chunks in parallel so as to use more CPU cores?
That would be great, but very difficult.  The Python parts of the 
problem are tricky to parallelize due to the GIL.  The Agg part of the 
problem will be difficult to parallelize unless there is a trivial way 
to chuck the plotted lines into parts before stroking -- each chunk 
could be rendered to its own buffer and then blended together in a final 
step.  But all that is academic at this point -- there's no code to do 
such a thing now.

 Plotting something other than random data, the plots run faster and
 the maximum chunk size is smaller.  The maximum chunk size
 also depends on the plot size - it is smaller for larger plots.  I am
 wondering if I could use this to plot course and fine versions of the
 plots.  The course plot is zoomed in version of the small-sized raster.
 That would be better than decimation as all the points would at least
 be there.
I think what you're seeing is the effect of the path simplification 
algorithm.  The number of points that it removes depends on the density 
of the points and the resolution of the output image.  It's hard to 
predict exactly how many points it will remove.

Mike

 Thanks in advance,

 David

 --- start code -
 ## Demo program shows how to chunk plots to avoid the exception:
 ##
 ##OverflowError: Agg rendering complexity exceeded.
 ##Consider downsampling or decimating your data.
 ##
 ## David Smith December 2011.

 from pylab import *
 import numpy as np

 nPts=600100
 x = np.random.rand(nPts)
 y = np.random.rand(nPts)

 ## This seems to always succeed if Npts= 2, but fails
 ## for Npts  3.  For points between, it sometimes succeeds
 ## and sometimes fails.
 figure(1)
 plot (x, y)

 ## Chunking the plot alway succeeds.
 figure(2)
 chunk_size=2
 iStarts=range(x.size/chunk_size)
 for iStart in iStarts:
  print Plotting chunk starting at %d\n % iStart
  plot(x[iStart:iStart+chunk_size], y[iStart:iStart+chunk_size], '-b')

 left_overs = nPts % chunk_size
 if left_overs  0:
  print Leftovers %d points\n % left_overs
  plot(x[-left_overs-1:], y[-left_overs-1:], '-r')

 print done plotting?
 show()
 -- end code 
 Please don't reply to this post It is rediculous to plot 1 million points on
 screen.  I am routinely capturing million-point traces from oscilloscopes and
 other test equipment and to I need to be able to spot features in the
 data (glitches if you will) that may not show up plotting decimated data.
 I can then zoom the plot to inspect these features.

 --
 Learn Windows Azure Live!  Tuesday, Dec 13, 2011
 Microsoft is holding a special Learn Windows Azure training event for
 developers. It will provide a great way to learn Windows Azure and what it
 provides. You can attend the event by watching it streamed LIVE online.
 Learn more at http://p.sf.net/sfu/ms-windowsazure
 ___
 Matplotlib-users mailing list
 Matplotlib-users@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/matplotlib-users


--
Learn Windows Azure Live!  Tuesday, Dec 13, 2011
Microsoft is holding a special Learn Windows Azure training event for 
developers. It will provide a great way to learn Windows Azure and what it 
provides. You can attend the event by watching it streamed LIVE online.  
Learn more at http://p.sf.net/sfu/ms-windowsazure