我正在尝试使用锤子投影绘制一些数据。最初,我是从 MPL 开始的,当时它正在工作。这是代码(为了保密,替换了我实际导入的数据):
# packages
import matplotlib.pyplot as plt
import uproot
import numpy as np
import cartopy.crs as ccrs
import cartopy.feature as cfeature
# import data
ra = np.random.randint(7, 84, 1179)
dec = np.random.randint(-80, 81, 1179)
# figure
fig = plt.figure()
ax = plt.subplot(111, projection="hammer")
# plot signal detections
ax.scatter(ra, dec, s = 10, color = "mediumslateblue")
# labels
ax.set_xlabel("RA (Degrees)", fontsize=14, labelpad=10)
ax.set_ylabel("Dec (Degrees)", fontsize=14, labelpad=10)
ax.set_title("Signal Direction", fontsize=18, pad=15)
# gridlines
plt.grid(True, linestyle="--", color="lightgray")
plt.savefig("RADecWorking.jpg", bbox_inches='tight')
当我运行这段代码时,我得到了一个看起来很棒的图(MPL Plot)。然而,我想做完全相同的事情,但在 cartopy 中,这样我就可以使用海岸线。这些是我所做的代码调整:
# figure
ax = plt.subplot(111, projection=ccrs.Hammer())
# plot signal detections
ax.scatter(ra, dec, s = 10, color = "mediumslateblue", transform=ccrs.PlateCarree())
# gridlines
gl = ax.gridlines(crs=ccrs.PlateCarree(), draw_labels=True, linestyle='--', linewidth=1, color='gray')
正如您在第二张图(Cartopy Plot)中看到的,我的数据仅被涂抹到地球的一个部分。据我了解,我拥有的实际 RA 数据(出于保密目的,此处再次未提供,但随机 numpy 数组具有代表性)仅在大约 7 到 84 度之间运行,我认为这就是为什么我的 cartopy 图是这样的。但既然如此,为什么 MPL 图能够正确显示呢? 我感谢您提供的任何帮助!
MPL 图
卡托皮情节
Cartopy 预计经度范围为
(-180, 180)
,纬度范围为 (-90, 90)
。这是一个方法:
# packages
import matplotlib.pyplot as plt
import numpy as np
import cartopy.crs as ccrs
import cartopy.feature as cfeature
ra = np.random.randint(7, 84, 1179)
dec = np.random.randint(-80, 81, 1179)
ra = ra * (360 / 24) - 180
fig = plt.figure()
ax = plt.subplot(111, projection=ccrs.Hammer())
ax.scatter(ra, dec, s=10, color="mediumslateblue", transform=ccrs.PlateCarree())
ax.coastlines()
ax.set_title("Signal Direction", fontsize=18, pad=15)
gl = ax.gridlines(crs=ccrs.PlateCarree(), draw_labels=True, linestyle='--', linewidth=1, color='gray')
plt.savefig("RADecWorking_Cartopy.jpg", bbox_inches='tight')
plt.show()
这给了你