我试图弄清楚在使用极赤平投影(NorthPolarStereo
)时,如何在Cartopy中更改网格线标签(更具体地说,纬度标签)的位置。
import matplotlib.pyplot as plt
import matplotlib.path as mpath
import numpy as np
import cartopy.crs as ccrs
# Helper function
# from https://nordicesmhub.github.io/NEGI-Abisko-2019/training/example_NorthPolarStereo_projection.html
def polarCentral_set_latlim(lat_lims, ax):
ax.set_extent([-180, 180, lat_lims[0], lat_lims[1]], ccrs.PlateCarree())
theta = np.linspace(0, 2*np.pi, 100)
center, radius = [0.5, 0.5], 0.5
verts = np.vstack([np.sin(theta), np.cos(theta)]).T
circle = mpath.Path(verts * radius + center)
ax.set_boundary(circle, transform=ax.transAxes)
fig = plt.figure(figsize=(6,6))
ax = fig.add_subplot(1,1,1,projection=ccrs.NorthPolarStereo(central_longitude=0))
ax.coastlines(linewidth=0.5,color='k')
ax.gridlines(color='C7',lw=1,ls=':',draw_labels=True,rotate_labels=False,ylocs=[60,70,80])
polarCentral_set_latlim((50,90),ax)
奇怪的是,即使central_longitude
设置为不同的值,纬度标签也总是绘制在大约150E处。我想把它们对准180度经线(类似于this plot中的标签),但我在gridlines
函数的文档中找不到设置它们位置的选项。我是否忽略了某些内容,或者我必须使用plt.text()
手动放置它们
2条答案
按热度按时间ni65a41a1#
创建
gridlines
后,可以访问一些标签并将其移动到新位置。我使用替代方法定义绘图的圆形边界,以免干扰网格线的标签。r8uurelv2#
可能是因为我用的是cartopy版本(0.21.1),但是@swatchai的答案对我不起作用。不过可以做一个小小的改变,效果会很好。