给定这里的形状文件:我想用自定义颜色绘制下面指定的一组县;韦恩县和华盛顿州为“蓝色”,其他县为“灰色”。
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文档的小地图着色更多信息。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句