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?
________________________________
De: Python-es [python-es-bounces+glez_b=comunidad.unam...@python.org] en nombre 
de Kiko [kikocorre...@gmail.com]
Enviado: miércoles, 30 de enero de 2013 02:01 a.m.
Para: La lista de python en castellano
Asunto: Re: [Python-es] Dibujar trayectorias sobre un mapa usando 
matplotlib-basemap



El 29 de enero de 2013 20:37, Boris Vladimir Comi 
<gle...@comunidad.unam.mx<mailto:gle...@comunidad.unam.mx>> escribió:
Gracias por tomarte el tiempo en responder, ya estructure mis datos en la forma 
que me indicas y he obtneido el producuto deseado. Ahora mi preguntas es, si  
mi archivo tiene mas de 30 trayectorias como las puedo graficar usando un for




________________________________
De: Python-es 
[python-es-bounces+glez_b=comunidad.unam...@python.org<mailto:comunidad.unam...@python.org>]
 en nombre de Kiko [kikocorre...@gmail.com<mailto:kikocorre...@gmail.com>]
Enviado: martes, 29 de enero de 2013 01:48 a.m.
Para: La lista de python en castellano
Asunto: Re: [Python-es] Dibujar trayectorias sobre un mapa usando 
matplotlib-basemap



    #!/usr/bin/python
    #Project Storm: Plot trajectories of convective systems
    #import libraries

    import numpy as np
    from mpl_toolkits.basemap import Basemap
    import  matplotlib.pyplot as pl

    # Plot a map for Mexico

    m = Basemap(projection='cyl', llcrnrlat=12, urcrnrlat=35,llcrnrlon=-120, 
urcrnrlon=-80, resolution='c', area_thresh=1000.)
    m.bluemarble()
    m.drawcoastlines(linewidth=0.5)
    m.drawcountries(linewidth=0.5)
    m.drawstates(linewidth=0.5)

    #Draw parallels and meridians

    m.drawparallels(np.arange(10.,35.,5.))
    m.drawmeridians(np.arange(-120.,-80.,10.))
    m.drawmapboundary(fill_color='aqua')

    #Open file whit numpy

El código anterior es lo que quieres. A partir de aquí usaría:

data = np.array([['19.70','-95.20','2/5/04 6:45 AM','1','-38','CCM'],

['19.70','-94.70','2/5/04 7:45 AM','1','-48','CCM'],

['19.30','-93.90','2/5/04 8:45 AM','1','-60','CCM'],

['19.00','-93.50','2/5/04 9:45 AM','1','-58','CCM'],

['19.00','-92.80','2/5/04 10:45 AM','1','-50','CCM'],

['19.20','-92.60','2/5/04 11:45 AM','1','-40','CCM'],

['19.90','-93.00','2/5/04 12:45 PM','1','-43','CCM'],

['20.00','-92.80','2/5/04 1:15 PM','1','-32','CCM'],

['23.10','-100.20','30/5/04 4:45 AM','2','-45','SCME'],

['23.20','-100.00','30/5/04 5:45 AM','2','-56','SCME'],

['23.30','-100.00','30/5/04 6:45 AM','2','-48','SCME'],

['23.30','-100.20','30/5/04 7:45 AM','2','-32','SCME'],

['23.40','-99.00','31/5/04 3:15 AM','3','-36','SCM'],

['23.50','-98.90','31/5/04 4:15 AM','3','-46','SCM'],

['23.60','-98.70','31/5/04 5:15 AM','3','-68','SCM'],

['23.70','-98.80','31/5/04 6:15 AM','3','-30','SCM']])

latitude = data[:,0].astype(np.float)

longitude = data[:,1].astype(np.float)


## x, y no te hacen falta para nada en este contexto


#Plot the points on the map, puedes usar un for. En este caso son solo tres 
casos y lo pongo explícito.


pl.plot(longitude[data[:,3] == '1'], latitude[data[:,3] == '1'],'ro-') # El 
primer ¿sistema convectivo de mesoescala?

pl.plot(longitude[data[:,3] == '2'], latitude[data[:,3] == '2'],'yo-') # el 
segundo

pl.plot(longitude[data[:,3] == '3'], latitude[data[:,3] == '3'],'go-') # y el 
tercero

pl.show()


Hola, fíjate en qué es lo que cambia en las tres líneas de los plots 
anteriores. Cambia el número del caso/tormenta ('1', '2', '3') y el color de la 
línea para la trayectoria de la tormenta (r, y, g). Usa un for que recorra los 
posibles casos y usa colores diferentes para cada caso 
(http://matplotlib.org/api/colors_api.html) si quieres que tengan colores 
diferentes. Los posibles casos los puedes obtener usando un set. No te pongo el 
código de forma explícita para que lo pienses un poco. Si no eres capaz de 
conseguirlo vuelve a preguntar.

Saludos.
_______________________________________________
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/

Responder a