为什么 Cartopy 上的海洋填充器功能不适用于我的地图?
Why is the Ocean filler feature on Cartopy not working for my map?
我正在尝试用 Cartopy 绘制欧洲图,我想用与陆地不同的颜色填充海洋。我相信我应该能够起诉这行代码:
ax.add_feature(ctp.feature.OCEAN, facecolor=(0.5,0.5,0.5))
为了做到这一点,但是当我这样做时,会生成如下所示的地图。这显然不是我想要实现的。有谁能帮我看看我的代码有什么问题吗?
我已将代码放在下面以便在本地复制。
import cartopy as ctp
import cartopy.crs as ccrs
import cartopy.io.shapereader as shpreader
import matplotlib.pyplot as plt
plt.figure(figsize=(10, 10))
ax = plt.axes(projection=ccrs.EuroPP())
ax.add_feature(ctp.feature.BORDERS, linestyle='-', alpha=1)
ax.coastlines(resolution='10m')
ax.add_feature(ctp.feature.OCEAN,facecolor=(0.5,0.5,0.5))
ax.coastlines()
ax.gridlines()
plt.show()
投影ccrs.EuroPP()
source是UTM的子类,是transversemercator
的子类。子类化的复杂性可能是导致不良结果的原因。您可以尝试我的代码,它使用直接投影 TransverseMercator(central_longitude=10)
,它应该几乎等同于 EuroPP
。可以调整 ax.set_extent()
中的值以获得您想要在地图上显示的区域。
plt.figure(figsize=(10, 10))
# Start- relevant code
pp_euro = ccrs.TransverseMercator(central_longitude=10)
ax = plt.axes(projection=pp_euro)
ax.set_extent([-1800000, 2050000, 4000000, 8000000], crs=pp_euro)
# End- relevant code
ax.add_feature(ctp.feature.BORDERS, linestyle='-', alpha=1)
ax.coastlines(resolution='10m')
ax.add_feature(ctp.feature.OCEAN,facecolor=(0.5,0.5,0.5))
ax.coastlines()
ax.gridlines(draw_labels=True)
plt.show()
我正在尝试用 Cartopy 绘制欧洲图,我想用与陆地不同的颜色填充海洋。我相信我应该能够起诉这行代码:
ax.add_feature(ctp.feature.OCEAN, facecolor=(0.5,0.5,0.5))
为了做到这一点,但是当我这样做时,会生成如下所示的地图。这显然不是我想要实现的。有谁能帮我看看我的代码有什么问题吗?
我已将代码放在下面以便在本地复制。
import cartopy as ctp
import cartopy.crs as ccrs
import cartopy.io.shapereader as shpreader
import matplotlib.pyplot as plt
plt.figure(figsize=(10, 10))
ax = plt.axes(projection=ccrs.EuroPP())
ax.add_feature(ctp.feature.BORDERS, linestyle='-', alpha=1)
ax.coastlines(resolution='10m')
ax.add_feature(ctp.feature.OCEAN,facecolor=(0.5,0.5,0.5))
ax.coastlines()
ax.gridlines()
plt.show()
投影ccrs.EuroPP()
source是UTM的子类,是transversemercator
的子类。子类化的复杂性可能是导致不良结果的原因。您可以尝试我的代码,它使用直接投影 TransverseMercator(central_longitude=10)
,它应该几乎等同于 EuroPP
。可以调整 ax.set_extent()
中的值以获得您想要在地图上显示的区域。
plt.figure(figsize=(10, 10))
# Start- relevant code
pp_euro = ccrs.TransverseMercator(central_longitude=10)
ax = plt.axes(projection=pp_euro)
ax.set_extent([-1800000, 2050000, 4000000, 8000000], crs=pp_euro)
# End- relevant code
ax.add_feature(ctp.feature.BORDERS, linestyle='-', alpha=1)
ax.coastlines(resolution='10m')
ax.add_feature(ctp.feature.OCEAN,facecolor=(0.5,0.5,0.5))
ax.coastlines()
ax.gridlines(draw_labels=True)
plt.show()