我一直在尝试在底图上绘制shapefile。我的问题是图例的位置。我希望图例放置在Map之外(旁边)。
具体来说,我正在绘制shapefile的“Ecogregion”列,它基本上用颜色标记每个多边形(我认为这比实际上在每个多边形上放置名称要好)。我尝试了以下代码,但收到了一个错误:
pip install geopandas
pip install contextily
import geopandas as gpd
import contextily as ctx
data = gpd.read_file("icemap.shp")
plt.rcParams.update({'font.size': 14})
ax = data.plot(
figsize=(12, 10),
column="Ecoregion",
cmap="tab10",
)
map = Basemap(
llcrnrlon=-50,
llcrnrlat=30,
urcrnrlon=70.0,
urcrnrlat=85.0,
resolution="i",
lat_0=39.5,
lon_0=1,
)
ax.legend(bbox_to_anchor=(1.05, 1), loc='upper left')
map.fillcontinents(color="lightgreen")
map.drawcoastlines()
map.drawparallels(np.arange(10,90,20),labels=[1,1,1,1])
map.drawmeridians(np.arange(-180,180,30),labels=[1,1,0,1])
plt.title("Map", fontsize=16)
错误是-
警告:matplotlib.legend:未找到带标签的句柄以放入图例。
所以我试着加上
legend-True
在“ax”括号中,并删除了“ax.legend(...)",但随后图例出现在Map顶部,如下图所示。
“handle”是指绘制的列吗?如果是,我不明白为什么会出现这个错误。或者我需要添加另一行代码吗?
如果能在这方面得到帮助我会很感激的。
(附件链接:(第10页)
1条答案
按热度按时间hi3rlvi21#
我也会考虑Cartopy,因为Basemap已经过时很久了。矢量的分辨率也远远超过了屏幕上绘制的分辨率,所以你可以通过稍微简化它来提高性能。
但您可以沿着绘制Geodataframe时传递图例关键字。