GenericMappingTools / pygmt

A Python interface for the Generic Mapping Tools.
https://www.pygmt.org
BSD 3-Clause "New" or "Revised" License
747 stars 216 forks source link

grdimage can not plot data with decreasing latitudes #368

Closed MarkWieczorek closed 4 years ago

MarkWieczorek commented 4 years ago

grdimage fails when attempting to plot grids that are not "global" [0, 360, -90, 90].

The xarray dataset I am trying to plot is equispaced in latitude and longitude, and normally would work with gmt. When trying to plot with pygmt however, the routine goes into some kind of infinite loop and never terminates.

The xarray dataset has the following characteristics:

Coordinates:
  * latitude   (latitude) float64 90.0 80.0 70.0 60.0 ... -60.0 -70.0 -80.0
  * longitude  (longitude) float64 0.0 10.0 20.0 30.0 ... 330.0 340.0 350.0

and I tried to plot the data using

fig.grdimage(grid, region=[0., 360., -90, 90], projection="W0/6i")

I note that the redundant data points at 360 E are not provided, and the data point at the south pole is not provided. I further note that this is the standard format for Driscoll and Healy sampled grids which are employed in pyshtools.

MarkWieczorek commented 4 years ago

With more investigation, it turns out that grdimage works when reading a netcdf file, but not when using an xarray dataarray. In particular, the following works:

fig.grdimage('test.cdf', region='g', projection="W0/6i")

but the following doesn't

grid = xr.load_dataset('test.cdf')
fig.grdimage(grid.data, region='g', projection="W0/6i") # data is the name of the dataarray
MarkWieczorek commented 4 years ago

I've narrowed the problem down to the following:

pygmt can not deal with grids where latitudes decrease, such as [90, 80, ....-80].

By inverting the array of latitudes, everything worked fine (but with an upside down image). Given that gmt can correctly parse this, the problem is somewhere in pygmt.

weiji14 commented 4 years ago

Hi @MarkWieczorek, thanks for taking a look at this, and opening a Pull Request too! I'll try and review your work in a bit.

weiji14 commented 4 years ago

Closed in #369.