cartopy Miller 投影中纬度标签的奇怪设置
Weird setting of latitude labels in cartopy Miller projection
为了让事情变得简单,我重现了我的问题,改编了 gallery of cartopy's latest release
中的一个例子
fig = plt.figure(figsize=(8, 10))
miller = ccrs.Miller(central_longitude=180)
ax = fig.add_subplot(1, 1, 1, projection=miller)
ax.set_global()
ax.coastlines()
ax.set_yticks(np.arange(-90, 90.5, 30), crs=miller)
lat_formatter = LatitudeFormatter()
ax.yaxis.set_major_formatter(lat_formatter)
plt.show()
由于某种原因,y 轴标签发生了变化并且具有奇怪的值。
可能与 LatitudeFormatter 有关?
重要提示:出于某些与环境相关的原因,我使用的是 cartopy 0.18.0b3.dev15+
Cartopy 提供的正是您所要求的,即米勒投影中 (-90, -60, -30, 0, 30, 60, 90) 处的标签,即不是纬度。因为您正在使用 LatitudeFormatter
它正在将这些 Miller 投影点转换为度数纬度供您显示。
您想要做的是在 lat/long 坐标系中添加标签,因此在创建刻度时应使用 ccrs.PlateCarree()
作为 crs
参数,如下所示:
import matplotlib.pyplot as plt
import cartopy.crs as ccrs
from cartopy.mpl.ticker import LatitudeFormatter
import numpy as np
fig = plt.figure(figsize=(8, 10))
miller = ccrs.Miller(central_longitude=180)
ax = fig.add_subplot(1, 1, 1, projection=miller)
ax.set_global()
ax.coastlines()
ax.set_yticks(np.arange(-90, 90.5, 30), crs=ccrs.PlateCarree())
lat_formatter = LatitudeFormatter()
ax.yaxis.set_major_formatter(lat_formatter)
plt.show()
为了让事情变得简单,我重现了我的问题,改编了 gallery of cartopy's latest release
中的一个例子fig = plt.figure(figsize=(8, 10))
miller = ccrs.Miller(central_longitude=180)
ax = fig.add_subplot(1, 1, 1, projection=miller)
ax.set_global()
ax.coastlines()
ax.set_yticks(np.arange(-90, 90.5, 30), crs=miller)
lat_formatter = LatitudeFormatter()
ax.yaxis.set_major_formatter(lat_formatter)
plt.show()
由于某种原因,y 轴标签发生了变化并且具有奇怪的值。 可能与 LatitudeFormatter 有关?
重要提示:出于某些与环境相关的原因,我使用的是 cartopy 0.18.0b3.dev15+
Cartopy 提供的正是您所要求的,即米勒投影中 (-90, -60, -30, 0, 30, 60, 90) 处的标签,即不是纬度。因为您正在使用 LatitudeFormatter
它正在将这些 Miller 投影点转换为度数纬度供您显示。
您想要做的是在 lat/long 坐标系中添加标签,因此在创建刻度时应使用 ccrs.PlateCarree()
作为 crs
参数,如下所示:
import matplotlib.pyplot as plt
import cartopy.crs as ccrs
from cartopy.mpl.ticker import LatitudeFormatter
import numpy as np
fig = plt.figure(figsize=(8, 10))
miller = ccrs.Miller(central_longitude=180)
ax = fig.add_subplot(1, 1, 1, projection=miller)
ax.set_global()
ax.coastlines()
ax.set_yticks(np.arange(-90, 90.5, 30), crs=ccrs.PlateCarree())
lat_formatter = LatitudeFormatter()
ax.yaxis.set_major_formatter(lat_formatter)
plt.show()