簡體   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