adjust axis to display array values

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

···

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.

Ok, so I can confirm that there are offset labels displaying when using the development version of mpl, which means that for some reason, the auto-ticker is deciding to use the offset display instead of just the regular display. Usually, this behavior doesn’t trigger until 1e4 or larger, I believe?

I will have to take a peek at what ticker is being used by default and seeing if it is different from the regular plots. In the meantime, if you need something to work right away, and you feel ambitious, you can fiddle with the tickers through the ax.w_xaxis and ax.w_yaxis objects (not the ax.xaxis and ax.yaxis objects):

http://matplotlib.sourceforge.net/api/ticker_api.html?highlight=ticker#matplotlib-ticker

Ben Root

···

On Fri, Feb 4, 2011 at 6:41 PM, Benjamin Root <ben.root@…3176…> wrote:

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©)

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