使用this map of NYC我想将曼哈顿改为明亮的蓝色。但是,当我更改曼哈顿的个别补丁颜色时,所有其他补丁颜色也会发生变化。这对我来说意外。
如何更改单个补丁的颜色?
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()
答案 0 :(得分: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_plot
和man_plot
指的是同一个对象,因此您第二次更新所有补丁。
请注意,在开发版本中,第二个图不再自动添加到第一个图中,但会创建一个新图。