-1

我想在坐标处注释城市名称柏林xy=(52.52, 13.405)。我已经尝试过ax.annotate()生成一张奇怪的地图。也许它与坐标的CRS有关?

import geopandas as gpd
import contextily as ctx

world = gpd.read_file(gpd.datasets.get_path('naturalearth_lowres'))
world = world[(world.name=="Germany")]
world = world.to_crs(epsg=3857)

ax = world.plot(figsize=(10, 10), color='none', linewidth=1, alpha=0.5)
ax.annotate("Berlin", xy=(52.52, 13.405))

ctx.add_basemap(ax, url=ctx.providers.Stamen.Watercolor, zoom=9)

在此处输入图像描述

4

2 回答 2

2

根据Annotations docpage ,您的代码应如下所示:

ax.annotate("Berlin", xy=(52.52, 13.405))
于 2020-05-25T08:56:16.997 回答
1

我的初始代码在两个方面存在缺陷。ax.annoate()正如其他答案所指出的那样,我错误地使用了。

此外,world被转化为espg=3857. 柏林市的坐标不是。使用转换后的坐标它可以工作:

import geopandas as gpd
import contextily as ctx

world = gpd.read_file(gpd.datasets.get_path('naturalearth_lowres'))
world = world[(world.name=="Germany")]
world = world.to_crs(epsg=3857)

ax = world.plot(figsize=(10, 10), color='none', linewidth=1, alpha=0.5)
ax.annotate("Berlin", xy=(1491636.9565986055, 6895388.533179172))

ctx.add_basemap(ax, url=ctx.providers.Stamen.Watercolor, zoom=9)

在此处输入图像描述

于 2020-05-25T09:04:37.040 回答