2016-08-10 5 views
2

利用可能なシェイプファイルhere: 私はカスタムカラーで以下の指定された郡をプロットしたいと思います。 WayneとWashtenaw郡では '青'、他の郡では '灰色'です。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

私はリストを渡すと私は散布図と同じようにループにプロットする試みたが、それだけで独立した郡はマップする代わりにプロットしたものと同じように動作していないようそれらのすべてが1つのプロットで一緒になります。

は、ここに私が試したものです:

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

@イナリー大変ありがとうございます!これはまさに私が必要としていたものです。 –

+0

@Ianery:関連する質問はこちら:http://stackoverflow.com/questions/38899190/geopandas-label-polygons –

+0

@ DanceParty2うれしいことにあなたのために働いた! – lanery

関連する問題