I am trying to plot the coastlines in the north part of the Mediterranean Sea.
The following script, that uses PlateCarre projection, works:
import matplotlib.pyplot as plt
import cartopy.crs as ccrs
from sys import exit as sys_exit
def main():
plt.figure(dpi=600)
ax = plt.axes(projection=ccrs.PlateCarree())
lon1, lon2, lat1, lat2 = 12., 16., 43.3, 46.
ax.set_extent([lon1, lon2, lat1, lat2], crs=ccrs.PlateCarree())
ax.coastlines()
plt.savefig('test.pdf')
plt.close()
return 0
if __name__ == '__main__':
sys_exit(main())
If I replace ccrs.PlateCarree with ccrs.Mercator, instead, I get an empty image. Here is the script with the replaced projection:
import matplotlib.pyplot as plt
import cartopy.crs as ccrs
from sys import exit as sys_exit
def main():
plt.figure(dpi=600)
ax = plt.axes(projection=ccrs.Mercator())
lon1, lon2, lat1, lat2 = 12., 16., 43.3, 46.
ax.set_extent([lon1, lon2, lat1, lat2], crs=ccrs.Mercator())
ax.coastlines()
plt.savefig('test.pdf')
plt.close()
return 0
if __name__ == '__main__':
sys_exit(main())
Can you tell me what I am doing wrong?
The Mercator coordinate system does not use degrees. If you still want to specify the extent in degrees you can use the PlateCarree
crs for that.
import matplotlib.pyplot as plt
import cartopy.crs as ccrs
plt.figure()
ax = plt.axes(projection=ccrs.Mercator())
lon1, lon2, lat1, lat2 = 12., 16., 43.3, 46.
ax.set_extent([lon1, lon2, lat1, lat2], crs=ccrs.PlateCarree())
ax.coastlines()
plt.show()