2016-07-07 5 views
1

Angenommen, ich habe den folgenden Geodatenrahmen, der 3 Polygonobjekte enthält.Geopandas Plots als Unterfiguren

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 Inhalt:

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

Ich kann für jedes Grundstück eine separate Figur machen durch geopandas.plot() zweimal aufrufen. Aber gibt es eine Möglichkeit für mich, diese beiden Karten nebeneinander in der gleichen Figur als Unterfiguren zu zeichnen?

enter image description here

enter image description here

+1

diese Frage wäre sehr verbessert, indem die Plotten einschließlich Befehle, die Sie verwendet, um Ihre Zahlen zu generieren. –

Antwort

3

Immer immerimmer erstellen Sie Ihre matplotlib vor der Zeit Objekte und an die Plotten Methoden übergeben (oder direkt verwenden). Damit Ihr Code wird:

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

Was gibt mir:

enter image description here

+0

Hmm, eigentlich, wenn ich Ihren Code ausführen bekomme ich die folgende Fehlermeldung: "Plot_multipolygon() hat mehrere Werte für Keyword-Argument 'ax'". Vielleicht verwenden wir verschiedene Versionen von Geopandas? – AJG519

+1

Ich bin auf Geopandas Version 0.2.0 –