2

使用这张纽约市地图,我想将曼哈顿更改为亮蓝色。但是当我改变曼哈顿的个别补丁颜色时,所有其他补丁颜色也会改变。这出乎我的意料。

你如何改变一个单独的补丁的颜色?

from matplotlib import pyplot as plt
import geopandas as gpd
nybb = gpd.GeoDataFrame.from_file('nybb.shp')


nybb_plot = nybb.plot()
for p_ny in nybb_plot.patches:
    p_ny.set_color("#111111")
    p_ny.set_alpha(0.6)

for line in nybb_plot.lines:
    line.set_linewidth(0.25)
    line.set_alpha(0.9)
    line.set_color("#d3d3d3")

manhattan = nybb.loc[nybb.BoroName == "Manhattan"]

man_plot = manhattan.plot()
for p_mh in man_plot.patches:
    p_mh.set_color("#33ccff")

plt.show()

NYBB输出图

4

1 回答 1

3

一种可能的解决方案是使用geopandas.plotting.plot_multipolygon仅向现有图形添加一个具有蓝色的几何对象:

from geopandas.plotting import plot_multipolygon
manhattan = nybb[nybb.BoroName == "Manhattan"]
plot_multipolygon(nybb_plot, manhattan.geometry.iloc[0], facecolor="#33ccff", edgecolor='none')

这给了我:

在此处输入图像描述

您的上述方法不起作用的原因是,geopandas 将第二个图添加到与第一个图相同的轴上(并且该轴是从 返回的plot())。所以nybb_plotman_plot指的是同一个对象,所以你第二次更新所有补丁。


请注意,在开发版本中,第二个图不会再自动添加到第一个图上,而是会创建一个新图形。

于 2015-09-08T20:09:21.100 回答