[Python-es] Dibujar trayectorias sobre un mapa usando matplotlib-basemap
Boris Vladimir Comi
glez_b en comunidad.unam.mx
Mie Feb 13 14:54:56 CET 2013
Antes que nada, perdon por escribir en ingles.
Gracias por la sugerencia, he logrado lo poner una marca al inicio de cada trayectoria.
Saludos
________________________________
De: Python-es [python-es-bounces+glez_b=comunidad.unam.mx en python.org] en nombre de Kiko [kikocorreoso en gmail.com]
Enviado: miércoles, 13 de febrero de 2013 01:32 a.m.
Para: La lista de python en castellano
Asunto: Re: [Python-es] Dibujar trayectorias sobre un mapa usando matplotlib-basemap
2013/2/12 Boris Vladimir Comi <glez_b en comunidad.unam.mx<mailto:glez_b en comunidad.unam.mx>>
Thank you for your ideas, I leave the correct code to plot trajectories of any object, in my case I have drawn the trajectories of convective storms.
1. # --- Construimos el mapa ---
2.
3. import numpy as np
4. from mpl_toolkits.basemap import Basemap
5. import matplotlib.pyplot as plt
6. from PIL import *
7. fig = plt.figure(figsize=(12,12))
8.
9. ax = fig.add_axes([0.1,0.1,0.8,0.8])
10.
11. m = Basemap(projection='cyl', llcrnrlat=12, urcrnrlat=35,llcrnrlon=-120, urcrnrlon=-80, resolution='c', area_thresh=1000.)
12.
13. m.bluemarble()
14. m.drawcoastlines(linewidth=0.5)
15. m.drawcountries(linewidth=0.5)
16. m.drawstates(linewidth=0.5)
17.
18. # --- Dibujamos paralelos y meridianos ---
19.
20. m.drawparallels(np.arange(10.,35.,5.),labels=[1,0,0,1])
21. m.drawmeridians(np.arange(-120.,-80.,5.),labels=[1,0,0,1])
22. m.drawmapboundary(fill_color='aqua')
23.
24. # --- Abrimos el archivo que contiene los datos ---
25.
26. import pandas as pd
27.
28. df = pd.read_csv('scm-2004.csv')
29. for evento, group in df.groupby(['evento']):
30. latitude = group.lat.values
31. longitude = group.lon.values
32. x,y = m(longitude, latitude)
33. plt.plot(x,y,'y-',linewidth=2 )
34. plt.xlabel('Longitud')
35. plt.ylabel('Latitud')
36. plt.title('Trayectorias de Sistemas Convectivos 2004')
37.
38.
39.
40. plt.savefig('track-2004.jpg', dpi=100)
With the above code, I get the desired figure. 60 paths drawn on the map of México.
I have only one last question: how could indicate the start of each of the storms, someone has an idea how I can do this?
Una pregunta, ¿por qué hablas en inglés en la lista de python en español?
Respecto a tu pregunta, puedes dibujar solo el punto inicial de la trayectoria usando plt.plot o plt.scatter con x[0] e y[0] cambiando el color de ese punto o el marcador que se usa para la trayectoria teniendo un marcador diferente para el origen de la tormenta. Este plt.plot o plt. scatter deberías usarlo después del plt.plot que usas para la trayectoria completa para que se dibuje por encima de ella.
Saludos.
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20130213/0a681ca6/attachment.html>
Más información sobre la lista de distribución Python-es