数据适用于 MPL Hammer Projection,但不适用于 Cartopy Hammer Projection

问题描述 投票:0回答:1

我正在尝试使用锤子投影绘制一些数据。最初,我是从 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 图

MPL Plot

卡托皮情节

Cartopy Plot

python matplotlib projection cartopy hammer
1个回答
0
投票

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()

这给了你

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.