2016-08-10 278 views
2

鑑於可用的形狀文件here: 我想用自定義顏色繪製下面指定的一組縣; Wayne和Washtenaw縣的'blue',其他縣的'gray'。GeoPandas,MatPlotLib繪製自定義顏色

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

我寧願先將顏色指定爲數據框中的列,然後在繪圖時調用它們。這可能嗎?

UPDATE

我試圖傳遞一個列表,如我所用散點圖在一個循環繪製,但它似乎並沒有相同的方式工作,因爲它只是單獨繪製地圖縣代替所有這些都集中在一個情節中。

這裏是我的嘗試:

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

提前感謝!

回答

3

Geopandas想根據您的geopandasdataframe中的數據着色您的地圖。因此,您可以使用的最簡單的着色方案是將'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) 

enter image description here

也許不是最完美的解決方案,但至少應該說明的是如何在色彩映射功能geopandas的概念,讓你你正在尋找的情節。同時查看geopandas docs的這一頁有關地圖着色的更多信息。

+0

@Ianery非常感謝你!這正是我需要的。 –

+0

@Ianery:相關的問題在這裏:http://stackoverflow.com/questions/38899190/geopandas-label-polygons –

+0

@ DanceParty2很高興它爲你工作! – lanery

相關問題