Seite 1 von 1
Piechart auf Karte plotten
Verfasst: Mittwoch 31. März 2010, 13:56
von gilb
Hallo Leute,
ich habe vor ein paar Tortendiagramme auf eine Karte zu plotten um Anteile in verschiedenen Regionen anzuzeigen.
Karten kann ich ja mit basemap plotten und Tortendiagramme erstelle ich mit pyplot.pie - jetzt muss ich also nur noch die beiden Sachen zusammenbringen und genau da liegt mein Problem: Ich finde keinen Weg, die Position so einer Torte auf der Karte festzulegen oder ihre Größe anzupassen.
Hat jemand von euch eine Idee?
Danke schonmal!
gilb
Verfasst: Donnerstag 1. April 2010, 02:08
von noisefloor
Hallo,
schau dir mal das Beispiel an:
http://scipy.org/Cookbook/Matplotlib/Maps
Dort werden zwar Städtenamen auf den Globus geplottet, aber was du letztendlich drauf plottest ist ja egal.
Plan B: Beides als .png mit transparentem Hintergrund speichern und dann mit PIL übereinander legen. Ist aber wahrscheinlich recht fummelig...
Gruß, noisefloor
Verfasst: Donnerstag 1. April 2010, 08:03
von gilb
Das habe ich mir schon angeschaut. Bei Text und Punkten kann man ja auch Größe und Koordinaten problemlos ändern - und genau das kriege ich ja mit den pie charts nicht hin.
Verfasst: Donnerstag 1. April 2010, 09:12
von gkuhl
@gilb: Code?
Verfasst: Donnerstag 1. April 2010, 14:31
von gilb
Also so sieht im Wesentlichen das Beispiel hinter dem Link aus.
Code: Alles auswählen
from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt
import numpy as np
map = Basemap(projection='ortho',lat_0=50,lon_0=-100,resolution='l',area_thresh=1000.)
map.drawcoastlines()
map.drawcountries()
map.drawmapboundary()
lats=[40.02,32.73]
lons=[-105.16,-117.16]
cities=['Boulder, CO','San Diego']
x,y = map(lons,lats)
map.plot(x,y,'bo')
for name,xpt,ypt in zip(cities,x,y):
plt.text(xpt+50000,ypt+50000,name)
plt.show()
Und ich würde gern in den letzten Zeilen etwas derartiges machen:
Code: Alles auswählen
proportions=[[0.3,0.2,0.5],[0.6,0.1,0.3]]
for prop,xpt,ypt in zip(proportions,x,y):
plt.pie(prop) #hier würde ich gern Position(xpt,ypt) auf der Karte und Größe bestimmen
plt.show()
Verfasst: Freitag 2. April 2010, 16:18
von noisefloor
Hallo,
ohne es getestet zu haben (habe die Module alle nicht installiert...) würde ich sagen:
Kann so nicht funktioniert. Also rein vom Prinziop nicht. Die kriegst die Position so nicht unter.
Anstatt mit der for-Schleife zu iterieren würde ich zum Testen es erstmal händisch machen: Also jede Tortengrafik generieren und dann auf Welkarte plotte.
Gruß, noisefloor
Verfasst: Mittwoch 7. April 2010, 14:51
von gilb
Sorry, vielleicht stehe ich gerade auf dem Schlauch, aber wie soll ich denn die Torten auf die Karte plotten, ohne ihnen eine Positions zu geben?