gpt4 book ai didi

python - 如何在python geopandas choropleth map中为子区域应用不同的边界宽度

转载 作者:行者123 更新时间:2023-12-04 13:13:26 29 4
gpt4 key购买 nike

我正在用 geopandas 制作等值线图。我想绘制具有两层边界的 map :较薄的用于民族国家(geopandas 默认),较厚的用于各种经济社区。这在地理 Pandas 中可行吗?
下面是一个例子:

import geopandas as gpd
import numpy as np
import matplotlib.pyplot as plt

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

africa = world.query('continent == "Africa"')

EAC = ["KEN", "RWA", "TZA", "UGA", "BDI"]

africa["EAC"] = np.where(np.isin(africa["iso_a3"], EAC), 1, 0)

africa.plot(column="pop_est")
plt.show()

我为属于 EAC 组的国家创建了一个虚拟变量。我想在这个组中的国家周围画一条更粗的边界,同时也留下国界。
enter image description here
编辑:
我仍然不知道如何在子图中进行这项工作。下面是一个例子:
axs = ["ax1", "ax2"]
vars = ["pop_est", "gdp_md_est"]
fig, axs = plt.subplots(ncols=len(axs),
figsize=(10, 10),
sharex=True,
sharey=True,
constrained_layout=True)

for ax, var in zip(axs, vars):

africa.plot(ax=ax,
column=var,
edgecolor="black",
missing_kwds={
"color": "lightgrey",
"hatch": "///"
})

ax.set_title(var)

plt.show()
enter image description here
我无法直接应用 Martin 的解决方案。

最佳答案

将背景图指定为轴并在第二个图中使用它,仅绘制 EAC 国家/地区。要只有轮廓,您需要 facecolor='none' .

ax = africa.plot(column="pop_est")

africa.loc[africa['EAC'] == 1].plot(ax=ax, facecolor='none', edgecolor='red', linewidth=2)
enter image description here
如果您只想在这些国家/地区周围设置边界,则必须 dissolve之前的几何。
africa.loc[africa['EAC'] == 1].dissolve('EAC').plot(ax=ax, facecolor='none', edgecolor='red', linewidth=2)
enter image description here

关于python - 如何在python geopandas choropleth map中为子区域应用不同的边界宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62691561/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com