[Matplotlib-users] strange axis limits behavior after using aspect_ratio

2008-02-14 Thread Mark Bakker
Hello -

As reported in an earlier post, when setting aspect ratio, the axis limits
don't get updated correctly it seems. Or maybe I have to make another
function call. Very easy example:

from pylab import *
ax = subplot(211)
plot([1,2,3])
ax.set_aspect('equal',adjustable='datalim')
print ax.get_xlim()  # Gives you (0.0, 2.0), which is incorrect, as the data
limits have been stretched.
draw()
print ax.get_xlim() # Gives (-1.8243394308943093, 3.8243394308943093) or
something like it, which is correct

I don't want to call draw, so is there some other function I can call to
update the axis limits? Should that function be called automatically from
set_aspect ?

I am using mpl 0.92.1. Thanks, Mark
-
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
[email protected]
https://lists.sourceforge.net/lists/listinfo/matplotlib-users


[Matplotlib-users] Backend Agg - problem!

2008-02-14 Thread sa6113


I want to draw an xy-plot using the " Backend Agg " of matplotlib.
But I don't know how I must start ...

Would you plz help me or send me an example code ??
-- 
View this message in context: 
http://www.nabble.com/Backend-Agg---problem%21-tp15478464p15478464.html
Sent from the matplotlib - users mailing list archive at Nabble.com.


-
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
[email protected]
https://lists.sourceforge.net/lists/listinfo/matplotlib-users


Re: [Matplotlib-users] Backend Agg - problem!

2008-02-14 Thread John Hunter
On Thu, Feb 14, 2008 at 5:26 AM, sa6113 <[EMAIL PROTECTED]> wrote:

>  I want to draw an xy-plot using the " Backend Agg " of matplotlib.
>  But I don't know how I must start ...
>
>  Would you plz help me or send me an example code ??

import numpy as np
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt

x, y = np.random.rand(2,100)

fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot(x, y, marker='o', linestyle='', markerfacecolor='green')
ax.set_title('Some random dots')
ax.set_xlabel('x')
ax.set_ylabel('y')
ax.grid(True)
fig.savefig('myplot.png', dpi=100)
plt.show()

If you want a figure window to popup, you can
"matplotlib.use('TkAgg')" instead of Agg.

See also

  - Tutorial: http://matplotlib.sf.net/tutorial.html

  - User's Guide: http://matplotlib.sourceforge.net/users_guide_0.91.2svn.pdf

  - Examples: http://matplotlib.sourceforge.net/examples

  - Examples with screenshots:
http://matplotlib.sourceforge.net/screenshots.html

Hope this helps,
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
[email protected]
https://lists.sourceforge.net/lists/listinfo/matplotlib-users


Re: [Matplotlib-users] strange axis limits behavior after using aspect_ratio

2008-02-14 Thread Michael Droettboom
You can call

   ax.apply_aspect()

to do the aspect ratio calculations -- seems to work for me here with 
your example.

The aspect ratio code has always felt like a bit of a black art to me 
(it's a seemingly "necessarily complex" piece of code).  Maybe someone 
else can answer -- is there a reason not to call apply_aspect() from 
set_aspect() besides a little extra computation?  It obviously will 
still have to be called from draw (in case the figure size changes), but 
does it hurt to do it one extra time?

Cheers,
Mike

Mark Bakker wrote:
> Hello -
> 
> As reported in an earlier post, when setting aspect ratio, the axis 
> limits don't get updated correctly it seems. Or maybe I have to make 
> another function call. Very easy example:
> 
> from pylab import *
> ax = subplot(211)
> plot([1,2,3])
> ax.set_aspect('equal',adjustable='datalim')
> print ax.get_xlim()  # Gives you (0.0, 2.0), which is incorrect, as the 
> data limits have been stretched.
> draw()
> print ax.get_xlim() # Gives (-1.8243394308943093, 3.8243394308943093) or 
> something like it, which is correct
> 
> I don't want to call draw, so is there some other function I can call to 
> update the axis limits? Should that function be called automatically 
> from set_aspect ?
> 
> I am using mpl 0.92.1. Thanks, Mark

-- 
Michael Droettboom
Science Software Branch
Operations and Engineering Division
Space Telescope Science Institute
Operated by AURA for NASA

-
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
[email protected]
https://lists.sourceforge.net/lists/listinfo/matplotlib-users


Re: [Matplotlib-users] strange axis limits behavior after using aspect_ratio

2008-02-14 Thread Mark Bakker
Interesting, I didn't even know about apply_aspect. And it does indeed work
for my case.
Any reason not to call that at the end of the set_aspect function? Eric
Firing probably knows.

I think the aspect ratio functionality is very cool.
You can set all kind of preferences, including an arbitrary aspect ratio.
I don't know any other plotting packages that does it so well.
Whether the code is complex or not I don't know.
But there is a lot of crap to have to keep track off.

Mark

On Thu, Feb 14, 2008 at 2:25 PM, Michael Droettboom <[EMAIL PROTECTED]> wrote:

> You can call
>
>   ax.apply_aspect()
>
> to do the aspect ratio calculations -- seems to work for me here with
> your example.
>
> The aspect ratio code has always felt like a bit of a black art to me
> (it's a seemingly "necessarily complex" piece of code).  Maybe someone
> else can answer -- is there a reason not to call apply_aspect() from
> set_aspect() besides a little extra computation?  It obviously will
> still have to be called from draw (in case the figure size changes), but
> does it hurt to do it one extra time?
>
> Cheers,
> Mike
>
> Mark Bakker wrote:
> > Hello -
> >
> > As reported in an earlier post, when setting aspect ratio, the axis
> > limits don't get updated correctly it seems. Or maybe I have to make
> > another function call. Very easy example:
> >
> > from pylab import *
> > ax = subplot(211)
> > plot([1,2,3])
> > ax.set_aspect('equal',adjustable='datalim')
> > print ax.get_xlim()  # Gives you (0.0, 2.0), which is incorrect, as the
> > data limits have been stretched.
> > draw()
> > print ax.get_xlim() # Gives (-1.8243394308943093, 3.8243394308943093) or
> > something like it, which is correct
> >
> > I don't want to call draw, so is there some other function I can call to
> > update the axis limits? Should that function be called automatically
> > from set_aspect ?
> >
> > I am using mpl 0.92.1. Thanks, Mark
>
> --
> Michael Droettboom
> Science Software Branch
> Operations and Engineering Division
> Space Telescope Science Institute
> Operated by AURA for NASA
>
-
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
[email protected]
https://lists.sourceforge.net/lists/listinfo/matplotlib-users


Re: [Matplotlib-users] Backend Agg - problem!

2008-02-14 Thread Alan G Isaac
On Thu, 14 Feb 2008, someone wrote:
> I want to draw an xy-plot using the " Backend Agg " of matplotlib. 

http://matplotlib.sourceforge.net/leftwich_tut.txt>

hth,
Alan Isaac




-
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
[email protected]
https://lists.sourceforge.net/lists/listinfo/matplotlib-users


[Matplotlib-users] Read/write data from matlab?

2008-02-14 Thread Neal Becker
Is there a way for me to read/write data to/from matlab?

I know nothing about matlab, but if I need a colleague to send me some data,
what should I tell her about how to save it from matlab so that I can
import it into matplotlib/numpy?


-
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
[email protected]
https://lists.sourceforge.net/lists/listinfo/matplotlib-users


Re: [Matplotlib-users] Backend Agg - problem!

2008-02-14 Thread Alan G Isaac
On Thu, 14 Feb 2008, John Hunter apparently wrote:
> import numpy as np 
> import matplotlib 
> matplotlib.use('Agg')
> import matplotlib.pyplot as plt 
> x, y = np.random.rand(2,100)
> fig = plt.figure()
> ax = fig.add_subplot(111)
> ax.plot(x, y, marker='o', linestyle='', markerfacecolor='green')
> ax.set_title('Some random dots')
> ax.set_xlabel('x')
> ax.set_ylabel('y')
> ax.grid(True)
> fig.savefig('myplot.png', dpi=100)
> plt.show()

Does that ``show`` command have any effect?
(I know the effect for TkAgg.)
I tried clicking the ``show`` help at
http://matplotlib.sourceforge.net/>
but that directs to
http://matplotlib.sourceforge.net/matplotlib.pyplot.html#-show>
which does not exist.

Thank you,
Alan Isaac





-
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
[email protected]
https://lists.sourceforge.net/lists/listinfo/matplotlib-users


Re: [Matplotlib-users] Read/write data from matlab?

2008-02-14 Thread Matthew Brett
Hi,

On Thu, Feb 14, 2008 at 3:10 PM, Neal Becker <[EMAIL PROTECTED]> wrote:
> Is there a way for me to read/write data to/from matlab?
>
>  I know nothing about matlab, but if I need a colleague to send me some data,
>  what should I tell her about how to save it from matlab so that I can
>  import it into matplotlib/numpy?

There's scipy.io.loadmat  . As far as I know it reads all valid mat
files, but happy to be corrected!

Matthew

-
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
[email protected]
https://lists.sourceforge.net/lists/listinfo/matplotlib-users


Re: [Matplotlib-users] basemap and omerc

2008-02-14 Thread Evan Mason
On Wed, Feb 13, 2008 at 2:16 PM, Jeff Whitaker <[EMAIL PROTECTED]> wrote:

> Evan Mason wrote:
> > Hi Jeff
> >
> > Here are the corners:
> >
> > lon_corners = N.array([-4.09300764,-35.76003475,-43.72330207,
> > -12.05627497])
> > lat_corners = N.array([41.90278813, 49.2136974, 14.7209971, 7.41008784])
> >
> > The reason for the differences is that the matlab script is very
> > fiddly, lots of trial and error to get the grid in the right place.
> > The attraction of using basemap is it allows me to specify the
> > corners, so that I have it right first time, that's the idea anyway.
> >
> > That would be great if you could turn off that rotation, maybe a
> > keyword True/False
> >
> > Thanks, Evan
>
> Evan:  I've changed Basemap in svn so you can set 'no_rot=True' when
> creating a Basemap instance for the 'omerc' projection to get what you
> want.  If you don't feel like upgrading (since that requires upgrading
> matplotlib to svn head at the same time), this will work in the version
> you have:
>
> from matplotlib.toolkits.basemap import Basemap, pyproj
> from pylab import *
> p = pyproj.Proj(lon_2=-27.8,lon_1=-19.9,no_rot=True,proj='omerc',\
>lat_2=11.0,lat_1=45.5)
> xmax,ymax = p(-4.093,41.9027)  # upper right corner
> xmin,ymin = p(-43.723,14.721)  # lower left corner
> x = linspace(xmin,xmax,35)
> y = linspace(ymin,ymax,35)
> x, y = meshgrid(x,y)
> lonr,latr = p(x,y, inverse=True)
> m = Basemap(llcrnrlon=-60,llcrnrlat=5,\
>urcrnrlon=15,urcrnrlat=60,resolution='i')
> m.drawcoastlines()
> m.scatter(lonr.flatten(),latr.flatten(),5,marker='o')
> m.drawmeridians(arange(-60,21,10),labels=[0,0,0,1])
> m.drawparallels(arange(0,61,10),labels=[1,0,0,0])
> show()
>
> Let me know if this fixes it for you.
>
> -Jeff
> >
> >
> >
> > On Feb 13, 2008 12:56 PM, Jeff Whitaker <[EMAIL PROTECTED]
> > > wrote:
> >
> > Evan Mason wrote:
> > > Hi Jeff
> > >
> > > By losing the memory I mean that the grid is no longer rotated;
> that
> > > the rotation I introduced through lat1, lon1, lat2, lon2 is
> > lost.  If
> > > you look at the latitude of the two bottom corners you see that
> they
> > > are the same, they should be different.  In other words, I want my
> > > great circle not to be the equator or a meridian, instead I want
> > it to
> > > be between lat1, lon1, lat2, lon2.  See for example:
> > >
> >
> http://erg.usgs.gov/isb/pubs/MapProjections/projections.html#mercator
> > >
> > > Attached is a png from the matlab script.  Here you can see the
> > > rotation that I am looking for.  The latitude of the two bottom
> > > corners is different, unlike what happens presently with my
> basemap
> > > script.
> > >
> > > Thanks, Evan
> >
> > Evan:  OK, I was confused by your use of the term 'losing the
> memory'.
> > Basemap didn't lose the rotation, it never had it in the first
> place.
> > It looks like matlab and Basemap define the projection regions
> > differently.  They both are right, but are showing you different
> > regions
> > of the same projection.  The difference is that proj4 (and therefore
> > Basemap) automatically rotates the y axis to lie along true north.
>  I
> > think I know how to modify Basemap to display the region you want,
> by
> > turning off that rotation.  Can you send me the lat/lon values of
> > the 4
> > corners of the region that matlab produces?
> >
> > -Jeff
> >
> > P.S. I don't know if this is relevant or not, but you appear to be
> > giving matlab different points to define the center of the
> projection
> > than you did in Basemap (the lons you gave matlab are
> > -23.75,-28.25, the
> > lons you give in Basemap are -27.8 and 19.9).
> > >
> > >
> > >
> > > On Feb 13, 2008 10:48 AM, Jeff Whitaker <[EMAIL PROTECTED]
> > 
> > > >> wrote:
> > >
> > > Evan Mason wrote:
> > > > Thanks for the replies.  The map you produced, Jeff, looks
> > as it
> > > > should.  However, I am trying to make an ocean model grid,
> > and so I
> > > > require two 2d arrays of lon and lat, at my desired grid
> > spacing.
> > > > This is why I try the steps:
> > > >
> > > > dl = 2.
> > > > nx = int((M.xmax - M.xmin) / dl) + 1
> > > > ny = int((M.ymax - M.ymin) / dl) + 1
> > > > lonr, latr = M.makegrid(nx, ny)   <- it seems to be here
> > that it
> > > loses
> > > > 'memory' of omerc projection that I specified, and maybe
> > there is a
> > > > bug here?
> > >
> > > Evan:  Why do you say it 'loses' memory of the projection?
> >  The values
> > > look fine to me - they are just equally spaced points in map
> > > projection
> > > coordinates that cover t

[Matplotlib-users] automatically choose line markers/styles?

2008-02-14 Thread Neal Becker
Can matplotlib automatically choose line styles and/or markers for a group
of plots?


-
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
[email protected]
https://lists.sourceforge.net/lists/listinfo/matplotlib-users


Re: [Matplotlib-users] automatically choose line markers/styles?

2008-02-14 Thread Alan G Isaac
On Thu, 14 Feb 2008, Neal Becker apparently wrote:
> Can matplotlib automatically choose line styles and/or 
> markers for a group of plots? 

http://matplotlib.sourceforge.net/matplotlibrc

Although I prefer to pass in a dict of keyword arguments.

Cheers,
Alan Isaac




-
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
[email protected]
https://lists.sourceforge.net/lists/listinfo/matplotlib-users


Re: [Matplotlib-users] automatically choose line markers/styles?

2008-02-14 Thread Neal Becker
Alan G Isaac wrote:

> On Thu, 14 Feb 2008, Neal Becker apparently wrote:
>> Can matplotlib automatically choose line styles and/or
>> markers for a group of plots?
> 
> http://matplotlib.sourceforge.net/matplotlibrc
> 
> Although I prefer to pass in a dict of keyword arguments.
> 
Not sure what you're telling me here.  I'm thinking:
I can get nice default grid with grid()
I can get nice default legend with legend()
Can I get nice default line styles and markers, automatically set up with
matching legend?  Automatically chosen?  I don't want to have to go through
and manually choose each marker and line style.


-
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
[email protected]
https://lists.sourceforge.net/lists/listinfo/matplotlib-users


Re: [Matplotlib-users] strange axis limits behavior after using aspect_ratio

2008-02-14 Thread Eric Firing
Michael Droettboom wrote:
> You can call
> 
>ax.apply_aspect()
> 
> to do the aspect ratio calculations -- seems to work for me here with 
> your example.
> 
> The aspect ratio code has always felt like a bit of a black art to me 
> (it's a seemingly "necessarily complex" piece of code).  Maybe someone 
> else can answer -- is there a reason not to call apply_aspect() from 
> set_aspect() besides a little extra computation?  It obviously will 
> still have to be called from draw (in case the figure size changes), but 
> does it hurt to do it one extra time?

Mike, Mark,

I answered this a minute ago before seeing the present set of messages, 
and without working through it carefully.

Now I see that, indeed, the simple default version of the call (no 
arguments) is identical to the version in the draw method.

It is possible that it would not actually hurt to call it in set_aspect, 
but I would need to look at that quite carefully, which I can't do right 
now.  Maybe this evening or this weekend at the latest.  And, the answer 
may be different for svn versus the present release; I will consider 
only svn.

I agree entirely that the aspect ratio code is complex, and painful to 
work with.  It took a long time to get it to its present state--make it 
do most things reasonably; a case is found where it doesn't work; fix 
that; another problem pops up; fix that; and on and on--but throughout 
there has been a sense that surely there must be a better way!

The torture test for the aspect ratio code is making a plot (or worse, a 
set of subplots with shared axes) and then using the toolbar box-select 
and the pan/zoom control and the display window corner to manipulate it 
every which way.  Then call set_aspect with a different setting and make 
sure it redraws sensibly, and do it all over again.

Eric

> 
> Cheers,
> Mike
> 
> Mark Bakker wrote:
>> Hello -
>>
>> As reported in an earlier post, when setting aspect ratio, the axis 
>> limits don't get updated correctly it seems. Or maybe I have to make 
>> another function call. Very easy example:
>>
>> from pylab import *
>> ax = subplot(211)
>> plot([1,2,3])
>> ax.set_aspect('equal',adjustable='datalim')
>> print ax.get_xlim()  # Gives you (0.0, 2.0), which is incorrect, as the 
>> data limits have been stretched.
>> draw()
>> print ax.get_xlim() # Gives (-1.8243394308943093, 3.8243394308943093) or 
>> something like it, which is correct
>>
>> I don't want to call draw, so is there some other function I can call to 
>> update the axis limits? Should that function be called automatically 
>> from set_aspect ?
>>
>> I am using mpl 0.92.1. Thanks, Mark
> 


-
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
[email protected]
https://lists.sourceforge.net/lists/listinfo/matplotlib-users


Re: [Matplotlib-users] strange axis limits behavior after using aspect_ratio

2008-02-14 Thread Eric Firing
Mark Bakker wrote:
> Hello -
> 
> As reported in an earlier post, when setting aspect ratio, the axis 
> limits don't get updated correctly it seems. Or maybe I have to make 
> another function call. Very easy example:
> 
> from pylab import *
> ax = subplot(211)
> plot([1,2,3])
> ax.set_aspect('equal',adjustable='datalim')
> print ax.get_xlim()  # Gives you (0.0, 2.0), which is incorrect, as the 
> data limits have been stretched.
> draw()
> print ax.get_xlim() # Gives (-1.8243394308943093, 3.8243394308943093) or 
> something like it, which is correct
> 
> I don't want to call draw, so is there some other function I can call to 
> update the axis limits? Should that function be called automatically 
> from set_aspect ?
> 
> I am using mpl 0.92.1. Thanks, Mark

Mark,

In the present design, there is quite a bit that happens only when 
draw() is invoked; in particular, the apply_aspect() method is called 
when an axes is drawn.  set_aspect merely sets the parameters that 
apply_aspect will use.  It would not make sense for set_aspect to call 
apply_aspect.

I have not thought this through, but in place of the call to draw() you 
could try making the same call that the Axes.draw() method does:

  ax.apply_aspect(ax.get_position(True))

Eric


-
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
[email protected]
https://lists.sourceforge.net/lists/listinfo/matplotlib-users


Re: [Matplotlib-users] Backend Agg - problem!

2008-02-14 Thread John Hunter
On Thu, Feb 14, 2008 at 9:17 AM, Alan G Isaac <[EMAIL PROTECTED]> wrote:
> On Thu, 14 Feb 2008, John Hunter apparently wrote:
>  > import numpy as np
>  > import matplotlib
>  > matplotlib.use('Agg')
>  > import matplotlib.pyplot as plt
...snip
>  > fig.savefig('myplot.png', dpi=100)
>  > plt.show()
>
>  Does that ``show`` command have any effect?
>  (I know the effect for TkAgg.)
>  I tried clicking the ``show`` help at

In this case no, since we are using an image backend.  But if we want
the script to be robust in the presence of different use directives,
eg matplotlib.use('TkAgg') then it is good to have the show in there.

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
[email protected]
https://lists.sourceforge.net/lists/listinfo/matplotlib-users