GeoPandas、MatPlotLib 绘制自定义颜色

GeoPandas, MatPlotLib Plot Custom Colors

鉴于可用的形状文件here: 我想用自定义颜色绘制下面指定的一组县; 'blue' 代表韦恩县和沃什特诺县,'grey' 代表其他县。

import geopandas as gpd
import matplotlib.pyplot as plt
%matplotlib inline

shpfile=<Path to unzipped .shp file referenced and linked above>
c=gpd.read_file(shpfile)
c=c.loc[c['GEOID'].isin(['26161','26093','26049','26091','26075','26125','26163','26099','26115','26065'])]
c.plot()

我更愿意先将颜色分配为数据框中的一列,然后在以某种方式绘制时调用它们。这可能吗?

更新

我试过像使用散点图一样传递一个列表并循环绘制,但它的工作方式似乎不同,因为它只是绘制单独的县地图,而不是将所有地图放在一起剧情.

这是我尝试过的:

color=['b','b','b','b','b','c','c','c','c','c']
for i in range(10):
    c.iloc[i:i+1].plot(c='white',linewidth=.5,color=color[i])

提前致谢!

Geopandas 想根据您 geopandas dataframe 中的数据为您的地图着色。因此,您可以使用的最简单的着色方案是向您的数据框添加一列 'color',并根据您希望各县的着色方式为其填充一些值。

import numpy as np
import geopandas as gpd
import matplotlib.pyplot as plt
from matplotlib.colors import LinearSegmentedColormap

shpfile = 'cb_2015_us_county_20m.shp'
c = gpd.read_file(shpfile)
c = c.loc[c['GEOID'].isin(['26161','26093','26049','26091','26075',
                           '26125','26163','26099','26115','26065'])]

c['color'] = np.zeros(len(c))
# 23 is index for Washtenaw county and 1992 is index for Wayne county
c.ix[23, 'color'] = 1.0
c.ix[1992, 'color'] = 1.0

# create simple linear colormap that maps grey to blue
cmap = LinearSegmentedColormap.from_list(
    'mycmap', [(0, 'grey'), (1, 'blue')])

c.plot(column='color', cmap=cmap)

也许这不是最优雅的解决方案,但这至少应该解释颜色图如何在 geopandas 中发挥作用的概念,并为您提供您正在寻找的情节。另请查看 geopandas docs 的此页面,了解有关地图着色的 一点 信息。