Изменить цвет одного патча в геопандах

Используя эту карту Нью-Йорка, я бы хотел изменить Манхэттен на ярко-синий. Но когда я меняю индивидуальный цвет патча Манхэттена, меняются и все остальные цвета патча. Это было неожиданно для меня.

Как изменить цвет одного патча?

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

1 ответ

Решение

Возможное решение использует 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')

Это дает мне:

Причина, по которой ваш вышеуказанный подход не работает, заключается в том, что геопанда добавляет второй график к тем же осям, что и первый график (и эта ось возвращается из plot()). Так nybb_plot а также man_plot ссылаются на один и тот же объект, поэтому вы обновляете все патчи во второй раз.


Обратите внимание, что в версии для разработки второй график больше не будет автоматически добавляться к первому, но будет создан новый рисунок.

Другие вопросы по тегам