# Unknown Axis Values after Projection

**URL:** <https://discourse.holoviz.org/t/unknown-axis-values-after-projection/3211>\
**Category:** GeoViews\
**Created:** [December 29, 2021, 6:33pm UTC](https://discourse.holoviz.org/t/unknown-axis-values-after-projection/3211 "2021-12-29T18:33:25Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![sbail](https://discourse.holoviz.org/letter_avatar_proxy/v4/letter/s/8baadc/32.png) [@sbail](https://discourse.holoviz.org/u/sbail)\
**Post date:** [December 29, 2021, 6:33pm UTC](https://discourse.holoviz.org/t/unknown-axis-values-after-projection/3211/1 "2021-12-29T18:33:25Z")

</div>

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?

 ![gs](https://discourse.holoviz.org/uploads/default/original/2X/7/728e3482e0b4c041bb390fd17de76bcffb490deb.png)

---

<div class="post-metadata">

**Author:** ![Marc](https://discourse.holoviz.org/user_avatar/discourse.holoviz.org/marc/32/24_2.png) [@Marc](https://discourse.holoviz.org/u/Marc)\
**Post date:** [December 30, 2021, 9:00am UTC](https://discourse.holoviz.org/t/unknown-axis-values-after-projection/3211/2 "2021-12-30T09:00:42Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![ahuang11](https://discourse.holoviz.org/user_avatar/discourse.holoviz.org/ahuang11/32/4947_2.png) [@ahuang11](https://discourse.holoviz.org/u/ahuang11)\
**Post date:** [January 3, 2022, 4:40pm UTC](https://discourse.holoviz.org/t/unknown-axis-values-after-projection/3211/3 "2022-01-03T16:40:43Z")

</div>

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

Maybe you can overlay graticules:  
[https://geoviews.org/user\_guide/Geometries.html](https://geoviews.org/user_guide/Geometries.html)

```auto
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’?

---

<div class="post-metadata">

**Author:** ![sbail](https://discourse.holoviz.org/letter_avatar_proxy/v4/letter/s/8baadc/32.png) [@sbail](https://discourse.holoviz.org/u/sbail)\
**Post date:** [January 4, 2022, 3:50pm UTC](https://discourse.holoviz.org/t/unknown-axis-values-after-projection/3211/4 "2022-01-04T15:50:47Z")

</div>

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
