繁体   English   中英

当我为使用 geopandas 绘制地图指定用户定义的颜色时,如何获取图例?

[英]How can I get legend when I specify user-defined color for plotting maps using geopandas?

我从 geopandas 的固有数据集创建了世界的 map,如下所示:

world = gpd.read_file(gpd.datasets.get_path("naturalearth_lowres"))

我通过突出使用独特的大陆绘制了世界的 map

world.plot("continent", legend = True)

图例也出现在 plot 中。 它看起来如下: 在此处输入图像描述

我会自动为每个大陆获得独特的颜色。 但是,我想自己定义每个大陆的颜色,并将它们放在传说中。 为了为每个大陆定义独特的颜色,我创建了一个字典color_dict ,如下所示:

{'Oceania': 'yellow',
 'Africa': 'brown',
 'North America': 'maroon',
 'Asia': 'blue',
 'South America': 'green',
 'Europe': 'red',
 'Seven seas (open ocean)': 'skyblue',
 'Antarctica': 'white'}

然后我将它作为新列附加到world地理熊猫 dataframe 并再次创建 plot。

world["Colors"] = world["continent"].map(color_dict)
world.plot("continent",
           color = world["Colors"],
           legend = True)

在此处输入图像描述

我得到每个大陆所需的颜色。 但是,现在我没有得到传说中的大陆名称和颜色。 当我自己定义颜色时,如何在 plot 中带上图例?

如果您使用笛卡尔将 geopandas 几何图形转换为多边形补丁,然后使用 matplotlib 生成绘图,您可能会发现您有更好的结果和更好的控制。

从 geopandas 绘图可能很挑剔。 可能需要一些试验和错误才能得到你想要的。

确保您的模块中有这些包

from matplotlib import pyplot
from descartes import PolygonPatch
from geopandas import GeoDataFrame

PolygonPatch 允许您为每个几何体指定边缘颜色和面颜色。

使用 pyplot,您应该能够创建您想要的图例。

形成各大洲的地理数据框 (gdf)。 对于您的 gdf 中的每个大陆,使用所需的面颜色形成一个 PolygonPatch。 然后将补丁添加到 pyplot 图。 使用 pyplot,您应该能够更轻松地指定图例并对其进行操作。

这是有关 PolygonPatches 的一些文档,以及绘制它们的示例(尽管不是您正在寻找的确切图例格式): https://pypi.org/project/descartes/ https://geoffboeing.com/2014/09/可视化-夏季旅行-第 6 部分-投影-空间数据-python/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM