2016-08-10 11 views
2

Angesichts der verfügbaren Form-Datei here: Ich möchte den angegebenen Satz von Grafschaften unten mit benutzerdefinierten Farben darstellen; "Blau" für Wayne und Washtenaw Grafschaften und "Grau" für die anderen.GeoPandas, MatPlotLib Plot Benutzerdefinierte Farben

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

Ich würde es vorziehen, die Farben als eine Spalte in dem Datenrahmen zuerst zuweisen, so dass sie dann aufzurufen, wenn irgendwie Plotten. Ist das möglich?

UPDATE

Ich habe versucht, eine Liste und Plotten in einer Schleife, wie ich sich mit einem Streudiagramm vorbei, aber es scheint nicht die gleiche Art und Weise zu arbeiten, wie es nur getrennten Kreis abbildet Plots statt sie alle zusammen in einer Handlung.

Hier ist, was ich versucht:

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

Vielen Dank im Voraus!

Antwort

3

Geopandas möchte Ihre Karte nach Daten in Ihrem geopandasdataframe Farbe. Das einfachste Farbschema, das Sie verwenden können, ist, eine Spalte 'color' zu Ihrem Datenrahmen hinzuzufügen und sie mit einigen Werten zu füllen, die darauf basieren, wie Sie Ihre Landkreise farbig gestalten möchten.

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

Vielleicht ist es nicht die eleganteste Lösung, aber dies sollte zumindest das Konzept der, wie Farbtabellen Funktion in geopandas erklären und Ihnen die Handlung bekommen Sie suchen. Überprüfen Sie auch diese Seite der geopandas docs für eine kleine mehr Infos auf der Karte Färbung.

+0

@Ianery Vielen Dank! Genau das habe ich gebraucht. –

+0

@Ianery: Verwandte Frage hier: http://stackoverflow.com/questions/38899190/geopandas-label-polygons –

+0

@ DanceParty2 froh, dass es für Sie gearbeitet hat! – lanery