8

鉴于此处提供的形状文件:我想用自定义颜色绘制下面指定的一组县;Wayne 和 Washtenaw 县为“蓝色”,其他县为“灰色”。

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])

提前致谢!

4

1 回答 1

9

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 文档的此页面,了解有关地图着色的更多信息

于 2016-08-11T00:07:04.177 回答