2016-07-07 3 views
1

Dites que j'ai la géodataframe suivante qui contient 3 objets polygones.Les parcelles Geopandas en tant que sous-divisions

import geopandas as gpd 
from shapely.geometry import Polygon 

p1=Polygon([(0,0),(0,1),(1,1),(1,0)]) 
p2=Polygon([(3,3),(3,6),(6,6),(6,3)]) 
p3=Polygon([(3,.5),(4,2),(5,.5)]) 

gdf=gpd.GeoDataFrame(geometry=[p1,p2,p3]) 
gdf['Value1']=[1,10,20] 
gdf['Value2']=[300,200,100] 

gdf contenu:

>>> gdf 
           geometry Value1 Value2 
0 POLYGON ((0 0, 0 1, 1 1, 1 0, 0 0))  1  300 
1 POLYGON ((3 3, 3 6, 6 6, 6 3, 3 3))  10  200 
2 POLYGON ((3 0.5, 4 2, 5 0.5, 3 0.5))  20  100 
>>> 

je peux faire une figure distincte pour chaque parcelle en appelant geopandas.plot() deux fois. Cependant, y a-t-il un moyen pour moi de tracer ces deux cartes les unes à côté des autres dans la même figure que les sous-figures?

enter image description here

enter image description here

+1

cette question serait grandement améliorée en incluant les commandes de traçage vous avez utilisé pour générer vos chiffres. –

Répondre

3

toujours toujourstoujours créer votre matplotlib objets à l'avance et de les transmettre aux méthodes de traçage (ou les utiliser directement). Ainsi, votre code devient:

from matplotlib import pyplot 
import geopandas 
from shapely import geometry 

p1 = geometry.Polygon([(0,0),(0,1),(1,1),(1,0)]) 
p2 = geometry.Polygon([(3,3),(3,6),(6,6),(6,3)]) 
p3 = geometry.Polygon([(3,.5),(4,2),(5,.5)]) 

gdf = geopandas.GeoDataFrame(dict(
     geometry=[p1, p2, p3], 
     Value1=[1, 10, 20], 
     Value2=[300, 200, 100], 
)) 

fig, (ax1, ax2) = pyplot.subplots(ncols=2, sharex=True, sharey=True) 
gdf.plot(ax=ax1, column='Value1') 
gdf.plot(ax=ax2, column='Value2') 

Ce qui me donne:

enter image description here

+0

Hmm, en fait quand je cours votre code je reçois le message d'erreur suivant: "plot_multipolygon() a plusieurs valeurs pour l'argument mot-clé 'ax'". Peut-être utilisons-nous différentes versions de géopandas? – AJG519

+1

Je suis sur geopandas version 0.2.0 –