Unknown Axis Values after Projection

I have been plotting some gridded satellite data using the Geoviews Image and matplotlib backend. The data is already in a plate carree projection. I have successfully plotted the data in plate carree, lambert cylindrical, and Mercator projections. These plots look correct, and the axis are labeled with the proper lat/lon coordinates. However any time I apply a projection that is rounded (orthographic, mollewide, or geostationary) the resulting plot looks correct, but the axis values are no longer in lat/lon coordinates. I attached a screenshot below of my geostationary plot with the unknown axis values. All of the rounded/globe projections I have tried plot the image in the correct location but the axis always seems to be in scientific notation. I am unsure if this is correct, but I thought maybe the scientific coordinates showing on the axis were the coordinates created when switching from plate carree to another projection. I also seemed to notice a lot of the examples in the gallery and documentation that used globe projections had the axes turned off. Is there anyway I can show the projections with the original lat/lon coordinates associated with the data?

1 Like

Hi @sbail

Welcome to the community.

Please provide a minimum, reproducible code example. It will make it much easier for the community to try to help. Thanks.

I think those are projected coordinates; similar to eastings/northings for Mercator.

Maybe you can overlay graticules:
https://geoviews.org/user_guide/Geometries.html

gv.output(backend='bokeh')

(gf.ocean * gf.land.options(scale='110m', global_extent=True) * gv.Feature(graticules, group='Lines') + 
 gf.ocean * gf.land.options(scale='50m', global_extent=True) * gv.Feature(graticules, group='Lines'))

and maybe there’s a group=‘Labels’?

Reproducible example:

ds = xr.open_mfdataset(“C:/Users/SydneyBailey/Documents/IRAD503/GridSat3Hour/*.nc”, concat_dim=‘time’, combine=‘nested’, parallel=True)
kdims = [‘time’, ‘lat’, ‘lon’]
vdims = [ ‘ch6’ ]
xr_dataset = gv.Dataset(ds, kdims=kdims, vdims=vdims, crs= crs.PlateCarree())

#creates plate carree projection w/ correct lat/lon on axis
gf.ocean * gf.land * (xr_dataset.to.image([‘lon’, ‘lat’]) * gf.coastline).opts(
opts.Image(projection=crs.PlateCarree(), fig_size=200))

#creates plot above with different values on axis
img = xr_dataset.to.image([‘lon’, ‘lat’])
gf.land * gf.ocean * img.opts(cmap=‘jet’,
projection=crs.Geostationary(central_longitude=ds[‘lon’].values.mean()),
global_extent=True) * gf.coastline