adjust axis to display array values

Hi Benjamin,

have you reied the mat file ?

i treid using a simple python array in a 2d plot and i'm having the same behavioure
the x,y coordinates are displayed ok when the mouse roll over the graph
but they are wrong in the axis labels.

路路路

Il giorno 05/feb/2011, alle ore 09.23, Massimo Di Stefano ha scritto:

Hi Benjamin,

The mat file is :

<complexity_depth_grid1.mat>

few kbyte :slight_smile:

thnaks!

Massimo

Il giorno 04/feb/2011, alle ore 19.41, Benjamin Root ha scritto:

On Friday, February 4, 2011, Massimo Di Stefano >> <massimodisasha@...287...> wrote:

Hello All,

i'm plotting a 3d colored surface using a 4D array that comes from a .mat file
using this code :

import scipy.io as sio
import pylab as p
import mpl_toolkits.mplot3d.axes3d as p3

def loadmatfile(matfile):
matdata = sio.loadmat(matfile)
return matdata

def plot3dcolor(matfile):
data = loadmatfile(matfile)
x = data['X_depth']
y = data['Y_depth']
z = -data['Z_depth']
c = data['Z_compl']
fig=p.figure()
ax = p3.Axes3D(fig)
cmap = p.get_cmap('jet')
norm = p.Normalize(c.min(), c.max())
colors = cmap(norm(c))
ax.plot_surface(x, y, z, rstride=10, cstride=10, facecolors=colors)
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')
print x,y
p.show()

matfile = '/Users/epy/Desktop/complexity_depth_grid1.mat'
plot3dcolor(matfile)

the results is nice :

http://img831.imageshack.us/f/schermata20110204a14542.png/

but as you can see, the mouse cursor shows me the x,y values (they are longitude and latitude)
but on the axis i have them starting from 0 ...

how can i change the axis to display the lon-lat coordinates ?

thanks a lot for any help!

Massimo.

I suspect what is happening is that the axes label numbers are right,
but is not showing the offset information. The display of offset data
in a 3d plot is a new feature that exists only in the development
branch.

To confirm this, could you send me your may file (if it is small) so
that I can try out your script?

Ben Root

Massimo,

Perhaps you missed my previous email, so I will explain what I have found so far.

First, in the 3d plots, the axes labels appear 鈥渨rong鈥 because the offset label is missing. Offset labeling for 3d plots is a new feature that hasn鈥檛 been released yet. However, if you do a pcolor() of the data on a 2D plot, you will see similar axes labels, but with the addition of the offset labels (the -7.025e1 and +4.259e1 in the attached plot). This means that all the labels should have that offset added to it to get the actual axis value. This is a way to save space. The reason for the offset labels to occur in the first place is that the range of axis values is so small, that it would take too much space to label each tick to the appropriate precision.

Therefore, in order to display your plot sufficiently, you will need to take control of the tickers and the tick formatters.

The API documentation can be found here: http://matplotlib.sourceforge.net/api/ticker_api.html

There are a couple of examples of how to use tickers here:
http://matplotlib.sourceforge.net/examples/pylab_examples/custom_ticker1.html

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

There are others, but that鈥檚 what I noticed from a quick look at http://matplotlib.sourceforge.net/examples/index.html

I hope this helps!

Ben Root

路路路

On Tue, Feb 8, 2011 at 8:27 AM, Massimo Di Stefano <massimodisasha@鈥287鈥> wrote:

Hi Benjamin,

have you reied the mat file ?

i treid using a simple python array in a 2d plot and i鈥檓 having the same behavioure

the x,y coordinates are displayed ok when the mouse roll over the graph

but they are wrong in the axis labels.