Newbie question.

Hi all, I'm an absolutely matplotlib newbie, so I'm sorry

    > if my question is trivial. Anyway I've read the user guide
    > and looked at the examples without finding out a solution.

    > Here it is my problem. Suppose I have a 2-dimensional
    > array containg my data, and I want to produce a surface or
    > a contour plot with it. Now the imshow() function seems
    > the right way to go through. So far so good. Now suppose I
    > want to draw the x,y axes for this plot, and suppose my
    > axes are represented by **not-uniform** 1-dimensional
    > array x[i], y[j]. How can I get the right ticks on the
    > plot axes??

You need to interpolate your data onto a rectilinear grid and then use
pcolor. imshow requires that your data be an image -- eg the dx and
dy between rows and columns is the same between every row and column.
pcolor only assumes a rectilinear grid, so the dx and dy can vary from
row to row and column to column. But you have unstructured data.

In matlab, the interpolation is handled by the griddata function.
Peter Groszkowski promised to post some code he uses to for this
purpose back in December, but apparently he got lost in the stars.
matlab uses a delaunay triangulation according to the documentation
for griddata -- I think Peter uses a different approach. I looked at
the scipy interpolate module but didn't see anything that looked just
right -- perhaps I missed it. It surprises that scipy doesn't
have a delaunay triangulation routine, but apparently it does not.

A quick google for revealed

which relies on the gnu qhull library...

A griddata function for mpl would be a nice complement to the meshgrid
function.

JDH

I'm not sure if that is what is being said. What may be referred to is a structured 2-d image for which it is intended that the data coordinates be taken from the x and y arrays (for corresponding locations). The contour task does allow one to give such x and y arrays, but not the image display tasks (if I remember correctly). Some clarification is needed.

Perry

···

On Feb 25, 2005, at 12:40 PM, John Hunter wrote:

    > Hi all, I'm an absolutely matplotlib newbie, so I'm sorry
    > if my question is trivial. Anyway I've read the user guide
    > and looked at the examples without finding out a solution.

    > Here it is my problem. Suppose I have a 2-dimensional
    > array containg my data, and I want to produce a surface or
    > a contour plot with it. Now the imshow() function seems
    > the right way to go through. So far so good. Now suppose I
    > want to draw the x,y axes for this plot, and suppose my
    > axes are represented by **not-uniform** 1-dimensional
    > array x[i], y[j]. How can I get the right ticks on the
    > plot axes??

You need to interpolate your data onto a rectilinear grid and then use
pcolor. imshow requires that your data be an image -- eg the dx and
dy between rows and columns is the same between every row and column.
pcolor only assumes a rectilinear grid, so the dx and dy can vary from
row to row and column to column. But you have unstructured data.

John Hunter wrote:

"Andrea" == Andrea Riciputi <ariciputi@...506...> writes:
           
   > Hi all, I'm an absolutely matplotlib newbie, so I'm sorry
   > if my question is trivial. Anyway I've read the user guide
   > and looked at the examples without finding out a solution.

   > Here it is my problem. Suppose I have a 2-dimensional
   > array containg my data, and I want to produce a surface or
   > a contour plot with it. Now the imshow() function seems
   > the right way to go through. So far so good. Now suppose I
   > want to draw the x,y axes for this plot, and suppose my
   > axes are represented by **not-uniform** 1-dimensional
   > array x[i], y[j]. How can I get the right ticks on the
   > plot axes??

You need to interpolate your data onto a rectilinear grid and then use
pcolor. imshow requires that your data be an image -- eg the dx and
dy between rows and columns is the same between every row and column.
pcolor only assumes a rectilinear grid, so the dx and dy can vary from
row to row and column to column. But you have unstructured data.

In matlab, the interpolation is handled by the griddata function.
Peter Groszkowski promised to post some code he uses to for this
purpose back in December, but apparently he got lost in the stars.

yup.. i did get a little "lost in the stars" - I forgot about it in fact. I promise I will post it in the next few days - this time I mean it. :wink:

···

--
Peter Groszkowski Gemini Observatory
Tel: +1 808 9742509 670 N. A'ohoku Place
Fax: +1 808 9359235 Hilo, Hawai'i 96720, USA