在Python中,我尝试在Mollweide投影中绘制全天空地图。我希望能够显示具有任意旋转坐标和坐标网格的地图。请参阅以下通用网格图像(在 IDL 中生成)进行说明:地图中心首先旋转到 -105 度经度,然后旋转到 +35 度纬度,网格线相应地进行变换。 [通用网格图像]
有没有办法用Python实现这个?
我尝试过使用
matplotlib.pyplot
或 mpl_toolkits.Basemap
包或 cartopy
包。
虽然所有这些都提供了 Mollweide 投影中的绘图,并具有特定的定制功能,但它们都没有提供将 Mollweide 地图的中心旋转远离赤道平面的工具。
您可以使用 cartopy 来执行此操作。这是一个入门代码。
import matplotlib.pyplot as plt
import cartopy.crs as ccrs
# Target case
pole_lat = 35
pole_lon = 0
cent_lon = -105
rotated_pole2 = ccrs.RotatedPole( pole_latitude = pole_lat,
pole_longitude = pole_lon,
central_rotated_longitude = cent_lon)
# Create plot figure and axes
ax = plt.axes(projection=ccrs.Mollweide())
ax.set_global()
# Plot the graticule
ax.gridlines(crs=rotated_pole2, draw_labels=False,
xlocs=range(-180,180,30),
ylocs=range(-90,90,30)) #draw_labels=True NOT allowed
# Plot some texts at various locations
lonlats = [ [0,0, '(0,0)'], [0,45, '(0,45)'], [0,90, '(0,90)'],
[-150,0, '(-150,0)'], [60,0, '(60,0)'], [90,0, '(90,0)']]
for ea in lonlats:
ax.text(ea[0], ea[1], ea[2], fontsize=8, fontweight='ultralight', color="k", transform=rotated_pole2)
plt.show()