eoj | 1 Apr 04:04 2012
Picon

Re: Having trouble installing matplotlib on Mac OS X Lion


Hi, 

   Have you tried the EPD python installation, it works for me and includes
SciPY/Numpy/ etc. 

http://www.enthought.com/products/epd_free.php

Cheers, 
Joe

William Carithers wrote:
> 
> Hi all,
> 
> I had matplotlib-0.99.1.1 working with Python 2.6 on OS X v10.6(Snow
> Leopard). Today I upgraded to Lion (v10.7) and matplotlib had disappeared.
> Lion ships with Apple¹s version of Python 2.7. Even when I look back at
> Python 2.6 in the /System/Library/Frameworks/Python/Version/Python2.6, it
> seems to be gone. OK, I thought I would install matplotlib-1.0.1 in Python
> 2.7 using easy_install. It failed when unable to find the headers for
> numpy
> (terminal output below). Lion comes with numpy 1.5.1 pre-installed. I
> tried
> re-installing numpy but that didn¹t help so now I¹m stuck.
> 
> Any suggestions?
> 
> Thanks.
> 
(Continue reading)

Massimo Di Stefano | 1 Apr 04:21 2012
Picon

bar plot (autofmt_xdate and left-right margins )


Hi All

i'm bring to do  simple bar plot formatting the xlabe as 'date' using a syntax like : 
fig.autofmt_xdate(bottom=0.1) 
but something is wrong in my code, please have you any hints on ghow to proper display the dates (Year) along
the x axis
and how to leave a margin on the left and on the right of the plot?   (my example has a margin only on the right,
while the first bar is adjacent to the Y axis)

 
###

import numpy as np
import matplotlib.pyplot as plt

x = np.array([1969,1970,1971,1972,1973,1974])
y = np.array([-3,10,23,-4,-5,6])
data = [x,y]

print x
print y

def bar_plot(data, Yval, datamin=None, datamax=None):
    """ doc """ 
    fig = plt.figure()
    fig.autofmt_xdate(bottom=0.1) 
    ax1 = fig.add_subplot(211)
    x = data[0]
    y = data[1]
(Continue reading)

Massimo Di Stefano | 1 Apr 12:41 2012
Picon

Re: bar plot (autofmt_xdate and left-right margins )


i modified the code as follow :

def bar_plot(data, Yval, datamin=None, datamax=None):
    """ doc """ 
    x = data[0]
    y = data[1]
    # reduce dataset based on min max date
    if datamin != datamax != None :
        x = data[0][np.where((data[0]>=datamin) & (data[0]<=datamax))[0]]
        y = data[1][np.where((data[0]>=datamin) & (data[0]<=datamax))[0]]
    # index for labeling
    xp = np.where((y<=0))[0]
    xn = np.where((y>0))[0]
    xx = np.where((y>0) | (y<=0))[0]
    # extract positive and negative values
    x_p = x[np.where(y>=0)[0]]
    y_p = y[np.where(y>=0)[0]]
    x_n = x[np.where(y<0)[0]]
    y_n = y[np.where(y<0)[0]]
    # start plotting code
    fig = plt.figure(figsize=(15,5))
    width = 0.7    
    plt.autoscale(enable=True, axis='both', tight=True)
    plt.bar(xn, y_n, width, color='blue', lw=2)
    plt.xticks(xx + (width/1.2), x)
    plt.autoscale(enable=True, axis='both', tight=True) 
    plt.bar(xp, y_p, width, color='red', lw=2)
    plt.title(Yval)
    fig.autofmt_xdate() 
(Continue reading)

David Craig | 1 Apr 13:35 2012
Picon

trouble with pcolor

Hi, I am trying to use pcolor to visualise three variables. For example if I have a value for z at x and a value for z at y something like [x1, x2, x3] = [z1, z2, z3] and [y1, y2, y3] = [z2, z1, z3]. Then I use meshgrid to create the grid for x and y,
X, Y = meshgrid(x, y)
the result is two array's of shape (3,3).
I then need to reshape Z to use pcolor, which is what I am having trouble with. I know I want a result like,

y3  0   0  z3

y2  z1 0   0

y1  0  z2  0

     x1 x2 x3

but have no idea how to create it. Anyone able to help??
thanks
D

------------------------------------------------------------------------------
This SF email is sponsosred by:
Try Windows Azure free for 90 days Click Here 
http://p.sf.net/sfu/sfd2d-msazure
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@...
https://lists.sourceforge.net/lists/listinfo/matplotlib-users
Joseph Meiring | 1 Apr 03:57 2012
Picon

Re: Copying a figure instance?

Thanks Tony, I think this will work! 

Cheers, 
Joe
On Mar 31, 2012, at 11:33 AM, Tony Yu wrote:



On Fri, Mar 30, 2012 at 12:25 PM, eoj <josephmeiring-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:

Basically the problem is like this. I have a relatively expensive (time wise)
figure to create, specifically a map with lots of detail in it. On top of
that, I'm  making an inset set of axes to highlight some regions. I'm having
to recreate the base of the map, which is static, every time I want to make
an inset for a different region which is taking forever. What I want to do
is something like this:

fig = figure()

#do stuff that makes the expensive figure

for region in regions:
   fig2 = copy.copy(fig)
   ax2 = fig.add_axes([0.1, 0.15, 0.25, 0.25])
   ax2.fill(x1,y1)
   savefig(region_name)
   close()



The problem is that the clf() clear figure function seems to clear the base
of the map off, even if I try to make a copy of it inside a loop that is
generating the insets. Also, close() seems to close fig and not fig2. Does
this rambling make any sense, and if so, any suggestions?


If all your additions are confined to the inset axes, you can use `fig.delaxes` to remove the axes from the figure (see example below). If you want to save and restore, as you describe above, you should (in principal) be able to do so with `canvas.copy_from_bbox` and `canvas.restore_region`, but I couldn't get it to work (see bottom of the animation cookbook).

Cheers,
-Tony

# ~~~ example
import numpy as np
import matplotlib.pyplot as plt

fig, ax = plt.subplots()
ax.imshow(np.random.uniform(size=(10, 10)))

ax_inset = fig.add_axes([0.3, 0.3, 0.2, 0.2])
ax_inset.plot([0, 1])
plt.savefig('plot0')

fig.delaxes(ax_inset)
ax_inset = fig.add_axes([0.5, 0.5, 0.2, 0.2])
ax_inset.plot([1, 0])
plt.savefig('plot1')
# ~~~


=======================
Joseph D. Meiring
Department of Astronomy
LGRT 517
University of Massachusetts
Amherst MA 01003
=======================

------------------------------------------------------------------------------
This SF email is sponsosred by:
Try Windows Azure free for 90 days Click Here 
http://p.sf.net/sfu/sfd2d-msazure
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@...
https://lists.sourceforge.net/lists/listinfo/matplotlib-users
Eric Firing | 1 Apr 21:47 2012

Re: Subplot array and colorbar

On 03/31/2012 07:26 AM, Marston wrote:
> Hi, I'm trying to create a plot, with subplots where each row of x plots
> have a common colorbar beneath it. Only the the top row will have
> titles. I've tried creating a function to do this but I only achieve
> partial success. Here is an image created in another program that I want
> to duplicate: I made several functions to do this. Here's one of them:
> def Plot(self,title,plist): for k in np.sort(self.vdic.keys()):
> plt.subplot(5,13,self.window) cs =
> plt.contourf(22,22,np.squeeze(self.vdic[k]),plist['levels'],
> cmap=cm.get_cmap('jet',len(plist['levels'])-1)) plt.axis('off') if
> title: plt.title(k,fontsize=tsize) window += 1 cbar =
> plt.colorbar(cax=plist['cax'],orientation='h') I've given up in getting
> the text on the left because every attempt using text fails. Now if this
> is a horrible way and you have a better idea, please feel free to share.
> I'm new at matplotlib and this is a great way to see how things can be
> done better and in different ways.

The problem is that what you are trying to do is a bit too complicated 
for the basic pyplot interface and for subplots.  The axes_grid toolkit 
might be helpful, or you may want to calculate the axes positions 
yourself as in 
http://matplotlib.sourceforge.net/examples/pylab_examples/multi_image.html.

For your text on the left, you can add text to a figure using the same 
coordinates as you use for specifying axes positions: (0,0) is lower 
left, (1,1) is upper right. E.g., in "ipython --pylab",

fig = plt.figure()
ax = fig.add_axes([0.4, 0.45, 0.5, 0.1])
lableft = fig.text(0.1, 0.5, "A Label")
plt.draw() #needed only when interactive

Eric

> ------------------------------------------------------------------------
> View this message in context: Subplot array and colorbar
> <http://old.nabble.com/Subplot-array-and-colorbar-tp33544950p33544950.html>
> Sent from the matplotlib - users mailing list archive
> <http://old.nabble.com/matplotlib---users-f2906.html> at Nabble.com.
>
>
>
> ------------------------------------------------------------------------------
> This SF email is sponsosred by:
> Try Windows Azure free for 90 days Click Here
> http://p.sf.net/sfu/sfd2d-msazure
>
>
>
> _______________________________________________
> Matplotlib-users mailing list
> Matplotlib-users@...
> https://lists.sourceforge.net/lists/listinfo/matplotlib-users

------------------------------------------------------------------------------
This SF email is sponsosred by:
Try Windows Azure free for 90 days Click Here 
http://p.sf.net/sfu/sfd2d-msazure
Skipper Seabold | 1 Apr 22:23 2012
Picon

abline plot?

Hi,

I wrote an abline_plot function, and I'm curious if what I'm doing is the best way to go about this. I tried unsuccessfully to get the transforms to do what I want, but I'm not sure if it's possible. What I came up with is to use callbacks to draw an "infinite" line. It works, but it seems a bit sluggish. Does anyone have any thoughts on improvements, anything I'm missing, or an alternative implementation? The only problem I see right now is that it assumes ax only has one ABLine2D child.

Thanks,

Skipper

import numpy as np
from matplotlib.lines import Line2D
import matplotlib.pyplot as plt


### Generate some data
intercept = 1.3
slope = .5
x = np.random.random(25)
y_noise = intercept + slope * x + np.random.randn(25)

### Set up the plot

fig = plt.figure()
ax = fig.add_subplot(111)
ax.scatter(x, y_noise)

class ABLine2D(Line2D):
   
    def update_datalim(self, ax):
        ax.set_autoscale_on(False)

        children = ax.get_children()
        abline = [children[i] for i in range(len(children))
                   if isinstance(children[i], ABLine2D)][0]
        x = ax.get_xlim()
        y = [x[0]*slope+intercept, x[1]*slope+intercept]
        abline.set_data(x,y)
        ax.figure.canvas.draw()

line = ABLine2D(x, y)
ax.add_line(line)
ax.callbacks.connect('xlim_changed', line.update_datalim)
ax.callbacks.connect('ylim_changed', line.update_datalim)

plt.show()

------------------------------------------------------------------------------
This SF email is sponsosred by:
Try Windows Azure free for 90 days Click Here 
http://p.sf.net/sfu/sfd2d-msazure
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@...
https://lists.sourceforge.net/lists/listinfo/matplotlib-users
Skipper Seabold | 1 Apr 22:34 2012
Picon

Re: abline plot?

On Sun, Apr 1, 2012 at 4:23 PM, Skipper Seabold <jsseabold <at> gmail.com> wrote:
Hi,

I wrote an abline_plot function, and I'm curious if what I'm doing is the best way to go about this. I tried unsuccessfully to get the transforms to do what I want, but I'm not sure if it's possible. What I came up with is to use callbacks to draw an "infinite" line. It works, but it seems a bit sluggish. Does anyone have any thoughts on improvements, anything I'm missing, or an alternative implementation? The only problem I see right now is that it assumes ax only has one ABLine2D child.


Hmm, it actually seems to handle multiple ablines ok, though I don't know if it's robust. Should ABLine2D take a slope and intercept in its instantiation?
 
Thanks,

Skipper

import numpy as np
from matplotlib.lines import Line2D
import matplotlib.pyplot as plt


### Generate some data
intercept = 1.3
slope = .5
x = np.random.random(25)
y_noise = intercept + slope * x + np.random.randn(25)

### Set up the plot

fig = plt.figure()
ax = fig.add_subplot(111)
ax.scatter(x, y_noise)

class ABLine2D(Line2D):
   
    def update_datalim(self, ax):
        ax.set_autoscale_on(False)

        children = ax.get_children()
        abline = [children[i] for i in range(len(children))
                   if isinstance(children[i], ABLine2D)][0]
        x = ax.get_xlim()
        y = [x[0]*slope+intercept, x[1]*slope+intercept]
        abline.set_data(x,y)
        ax.figure.canvas.draw()

line = ABLine2D(x, y)
ax.add_line(line)
ax.callbacks.connect('xlim_changed', line.update_datalim)
ax.callbacks.connect('ylim_changed', line.update_datalim)

plt.show()

------------------------------------------------------------------------------
This SF email is sponsosred by:
Try Windows Azure free for 90 days Click Here 
http://p.sf.net/sfu/sfd2d-msazure
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@...
https://lists.sourceforge.net/lists/listinfo/matplotlib-users
Eric Firing | 1 Apr 22:36 2012

Re: assigning a plot object to a figure

On 03/30/2012 01:23 PM, Emmanuel Mayssat wrote:
> Hello all,
>
> I can create a figure
> and get the corresponding axes/plots
>
> for examples:
> 1/
> fig = Figure(figsize=(width, height), dpi=dpi)
> ax = gif.add_subplot(111)
>
> 2/
> fig, ax = plt.subplots()
>
> but I would like to create my plot independently from the figure and
> assign it to a figure
>
> I code I would like to do something like this
>
> my_ax = Axes(...)
> my_ax.plot(x,y)
>
>
> ax = my_ax
>
> or
>
> my_ax.set_figure(fig)
>
> How can I create the axes/plot object independently from the figure?

As far as I can see, you can't.  The figure is deeply embedded in the 
Axes object; that's why the figure is an argument in Axes.__init__().

> Better yet, how can I assign an axe to a figure?

I don't think you can.  It looks to me like Axes.set_figure should be 
clearly marked as a private method, not to be used except in 
Axes.__init__().

Short of a major refactoring of mpl, I think you will need to find some 
other way of accomplishing your ultimate aim.

Eric

> --
> Emmanuel

------------------------------------------------------------------------------
This SF email is sponsosred by:
Try Windows Azure free for 90 days Click Here 
http://p.sf.net/sfu/sfd2d-msazure
Eric Firing | 1 Apr 22:41 2012

Re: how to set contourf plot colorbar narrow?

On 03/29/2012 06:29 AM, Chao YUE wrote:
> Dear all,
>
> I make a contourf plot but I think the colorbar is too wide. Can I make
> it narrower (slimmer)?
>

Yes, you can use the aspect kwarg.  The default is 20.  Try

cbar = plt.colorbar(aspect=40)

http://matplotlib.sourceforge.net/api/figure_api.html#matplotlib.figure.Figure.colorbar

Eric

> plt.contourf(data)
> cbar=plt.colorbar()
>
> ??
>
> thanks for any suggestions.
>
> 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
> ************************************************************************************
>
>
>
> ------------------------------------------------------------------------------
> This SF email is sponsosred by:
> Try Windows Azure free for 90 days Click Here
> http://p.sf.net/sfu/sfd2d-msazure
>
>
>
> _______________________________________________
> Matplotlib-users mailing list
> Matplotlib-users@...
> https://lists.sourceforge.net/lists/listinfo/matplotlib-users

------------------------------------------------------------------------------
This SF email is sponsosred by:
Try Windows Azure free for 90 days Click Here 
http://p.sf.net/sfu/sfd2d-msazure

Gmane