Incidentally, if you wanted to do this a little more expressively than
indexing, you could look into using iris (
http://scitools.org.uk/iris/docs/latest/index.html). It doesn't currently
support DAP, but if you had the NetCDF file (from *
http://www.marine.csiro.au/dods-data/climatology-netcdf/levitus_monthly_temp_98.nc
*) you would do:

import iris

import iris.quickplot as qplt

import matplotlib.pyplot as plt



temp_cube = iris.load_cube(*'levitus_monthly_temp_98.**nc**'*)


# Sort out some of the bad metadata. Firstly, set the unit,

# secondly rename the dimension 1 coordinate to 'depth'.

temp_cube.unit = *'C'*

temp_cube.coord(dimensions=1, dim_coords=True).rename(*'depth'*)


# Extract a spatial sub-domain.

sub_temp_cube = temp_cube.extract(iris.Constraint(latitude=0.5,

                              longitude=lambda v: 45 < v < 100))


# Iterate over all the depth-longitude sections (in this case it

# iterates over time)

for cross_sect_cube in sub_temp_cube.slices([*'depth'*, *'longitude'*]):

    qplt.pcolormesh(cross_sect_cube)

    plt.gca().invert_yaxis()

    plt.show()

    break

[image: Inline images 1]



Hope that helps!

Phil








On 2 March 2013 09:37, Phil Elson <pelson....@gmail.com> wrote:

> Perhaps something like:
>
>
> from matplotlib import pyplot as plt
>
> from netCDF4 import Dataset
>
> import numpy as np
>
>
>
> url=*'
> http://www.marine.csiro.au/dods/nph-dods/dods-data/climatology-netcdf/levitus_monthly_temp_98.nc
> '*
>
> ds = Dataset(url)
>
>
>
> temp = ds.variables[*'TEMP'*]
>
> lats = ds.variables[*'**lat**'*]
>
> lons = ds.variables[*'**lon**'*]
>
> depths = ds.variables[*'z'*]
>
>
>
> # filter all but one latitude
>
> lat_index = np.where(lats[:] == 0.5)[0][0]
>
> lats = lats[lat_index]
>
>
> # filter a range of longitudes
>
> lon_lower_index = np.where(lons[:] == 44.5)[0][0]
>
> lon_upper_index = np.where(lons[:] == 100.5)[0][0]
>
> lons = lons[lon_lower_index:lon_upper_index]
>
>
> temp = temp[0, :, lat_index, lon_lower_index:lon_upper_index]
>
>
>
> plt.pcolormesh(lons, depths[:], temp)
>
> plt.gca().invert_yaxis()
>
>
> plt.show()
>
>
>
>
>
>
> The indexing approach used here is quite flakey, so I certainly wouldn't
> use this in anything operational.
>
> Hope this helps,
>
> Phil
>
>
>

<<figure_1.png>>

------------------------------------------------------------------------------
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://p.sf.net/sfu/appdyn_d2d_feb
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users

Reply via email to