旋转纬度 (y) 刻度标签 - cartopy

Rotate latitude (y) tick labels - cartopy

有没有办法在 cartopy 地图中旋转纬度刻度标签?我知道这在 QGIS 等 GIS 程序中是一个非常简单和常用的选项,但是在使用 cartopy 时我找不到任何关于这个主题的东西。

下面是一个简单的例子(我绘制了自己的 shapefile,这里就不表达了):

import matplotlib.pyplot as plt
import cartopy.crs as ccrs
from cartopy.mpl.ticker import LongitudeFormatter, LatitudeFormatter

mapp = plt.subplot(111, projection=ccrs.PlateCarree())
mapp.set_extent([-44.2, -45.6, -23.36, -24.35])

mapp.set_yticks([-23.5,-24], crs=ccrs.PlateCarree())
mapp.set_xticks([-44.5,-45.5], crs=ccrs.PlateCarree())

lon_formatter = LongitudeFormatter(number_format='.1f')
lat_formatter = LatitudeFormatter(number_format='.1f')
mapp.xaxis.set_major_formatter(lon_formatter)
mapp.yaxis.set_major_formatter(lat_formatter)
plt.show()

它不是最好的 MCVE,但无论如何,它水平显示纬度刻度标签 -- 这是标准。我的问题是:有没有办法将纬度刻度标签(或 y 刻度标签)旋转 90°,使其垂直?

由于 cartopy 坐标轴只是一种特殊的 matplotlib 坐标轴,您可以对 matplotlib 绘图执行的很多操作,也可以对 cartopy 绘图执行。

对于旋转刻度标签,有一个 example in the matplotlib gallery

因此,要旋转您的 y 刻度标签,您只需将以下内容添加到您的代码中:

plt.yticks(rotation='vertical')

我还注意到您的地图范围顺序错误。顺序应该是

[x_min, x_max, y_min, y_max]

因此您的代码应如下所示:

mapp.set_extent([-24.35, -23.36, -45.6, -44.2])