【问题标题】:overlay map with different colour不同颜色的叠加图
【发布时间】:2020-03-10 14:34:50
【问题描述】:

所以我有这个荷兰的 GADM 地理数据框,我想在荷兰的 GADM 上绘制不同颜色的阿姆斯特丹、乌得勒支、海牙和鹿特丹的叠加地图。但是,我无法更改叠加图的颜色。

这是我的尝试:

NL_boundaries = gpd.read_file("C:/Users/zaa_k/Documents/0.Thesis/Datasets/GADM/gadm36_NLD_2.shp")

NL_boundaries_Ams = NL_boundaries[NL_boundaries['NAME_2']=='Amsterdam']
NL_boundaries_Ams = NL_boundaries[NL_boundaries['NAME_2']=='Rotterdam']
NL_boundaries_Ut = NL_boundaries[NL_boundaries['NAME_2']=='Utrecht']
NL_boundaries_Hag = NL_boundaries[NL_boundaries['NAME_2']=="'s-Gravenhage"]

f, ax = plt.subplots(1, figsize=(12, 12))
ax = NL_boundaries.plot(axes=ax)
lims = plt.axis('equal')
for poly in NL_boundaries['geometry']:
    gpd.plotting.plot_multipolygon(ax, poly, facecolor='red', linewidth=0.025)
for poly in NL_boundaries_Ams['geometry']:
    gpd.plotting.plot_multipolygon(ax, poly, alpha=1, facecolor='red', linewidth=0)
for poly in NL_boundaries_Ut['geometry']:
    gpd.plotting.plot_multipolygon(ax, poly, alpha=1, facecolor='red', linewidth=0)
for poly in NL_boundaries_Rot['geometry']:
    gpd.plotting.plot_multipolygon(ax, poly, alpha=1, facecolor='red', linewidth=0)
for poly in NL_boundaries_Hag['geometry']:
    gpd.plotting.plot_multipolygon(ax, poly, alpha=1, facecolor='red', linewidth=0)
ax.set_axis_off()
f.suptitle('Areas with smallest population')
plt.axis('equal')
plt.show()

这是不受欢迎的结果:

谁能帮我把阿姆斯特丹、乌得勒支、海牙和鹿特丹染成其他颜色?谢谢

【问题讨论】:

  • 如果我们可以访问数据,调试起来会更容易。能给个链接吗?

标签: python matplotlib


【解决方案1】:

我明白了。就是这么简单。 首先,提取我们要突出显示的每个 GADM 区域的所需区域:

NL_boundaries = gpd.read_file("C:/Users/zaa_k/Documents/0.Thesis/Datasets/GADM/gadm36_NLD_2.shp")
NL_boundaries_Ams = NL_boundaries[NL_boundaries['NAME_2']=='Amsterdam']
NL_boundaries_Rot = NL_boundaries[NL_boundaries['NAME_2']=='Rotterdam']
NL_boundaries_Ut = NL_boundaries[NL_boundaries['NAME_2']=='Utrecht']
NL_boundaries_Hag = NL_boundaries[NL_boundaries['NAME_2']=="'s-Gravenhage"]

不要忘记设置我们要突出显示的每个区域的边界框:

# Bounding Box four cities
NL_boundaries_Ams.total_bounds
NL_boundaries_Rot.total_bounds
NL_boundaries_Ut.total_bounds
NL_boundaries_Hag.total_bounds
xlim = ([NL_boundaries_Rot.total_bounds[0],  NL_boundaries_Ut.total_bounds[2]])
ylim = ([NL_boundaries_Rot.total_bounds[1],  NL_boundaries_Ams.total_bounds[3]])

然后将 GADM 区域的每一层绘制在彼此之上,如下所示:

f, ax = plt.subplots(1, figsize=(25, 25))
ax.set_xlim(xlim)
ax.set_ylim(ylim)
ax = NL_boundaries.plot(axes=ax, alpha=0.1, edgecolor= 'k')
ax = NL_boundaries_Ams.plot(axes=ax, alpha=1)
ax = NL_boundaries_Rot.plot(axes=ax, alpha=1)
ax = NL_boundaries_Ut.plot(axes=ax, alpha=1)
ax = NL_boundaries_Hag.plot(axes=ax, alpha=1)
ax = dataPoints0.plot(axes=ax, color='red')
ax = dataPoints1.plot(axes=ax, color='cyan')
ax = dataPoints2.plot(axes=ax, color='magenta')
ax = dataPoints3.plot(axes=ax, color='orange')
ax = dataPoints4.plot(axes=ax, color='black')
ax = dataPoints5.plot(axes=ax, color='lime')
ax = dataPoints6.plot(axes=ax, color='blueviolet')
ax = dataPoints7.plot(axes=ax, color='turquoise')

plt.title('K-cluster = 8')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-16
    • 2011-05-15
    • 2021-02-25
    相关资源
    最近更新 更多