[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