plot trajectories on an map using basemap
Question: 
    import numpy as np
    data = np.loadtxt('path-tracks.csv',dtype=np.str,delimiter=',',skiprows=1)
    print data
    
    [['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']]
    

with the above code I get an array whose columns represent: [Lat, Lon, Date,
Identifier, Temperatures, Category]. Now, I will put a code that allows me to
plot the first and second column on the map of Mexico:

    
    
    #!/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
    
    data = np.loadtxt('path-tracks.csv', dtype=np.str,delimiter=',', skiprows=1)
    latitude = data[:,0]
    longitude = data[:,1]
    
    #Convert latitude and longitude to coordinates X and Y
    
    x, y = m(longitude, latitude)
    
    #Plot the points on the map
    
    pl.plot(x,y,'ro-')
    pl.show()
    

The points plotted on the map, corresponding to three different paths. Mi
final idea is to draw a line connecting the points associated with each path,
How I can do this?

is posible draw an identifier or a mark for each path?

how I can set the size of the figure so that it can distinguish the separation
between the points?


Answer: The size of the figure can be set by simply creating a `figure` before calling
`Basemap`. I have used Pandas to read the CSV because it allows easy grouping
(per path). If you dont want to use Pandas you probably can get the same
result by iterating over `np.unique('cat')` or something. If you use the
`datetime` as the index in pandas your points automatically get sorted by time
in the case your CSV is unsorted.

I'm not sure what you mean by drawing an identifier. The legend makes it
possible to distinguish between paths but you could also plot the `'Cat'` on
the map at the beginning or end of a line for example.

Your map properties make it a bit 'zoomed out' for such small paths. Using `ax
= pl.gca()` and `ax.set_xlim()` allows you to set a boundingbox in the
mapcoordinates. Which you can derive from the max and min coordinates in your
paths + some buffer.

    
    
    import numpy as np
    from mpl_toolkits.basemap import Basemap
    import  matplotlib.pyplot as pl
    import pandas as pd
    
    fig = plt.figure(figsize=(12,12))
    
    # 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')
    
    colors = {'CCM': 'red', 'SCME': 'white', 'SCM': 'yellow'}
    
    for cat, track in df.groupby('Cat'):
    
        latitude = track.Lat.values
        longitude = track.Lon.values
    
        #Convert latitude and longitude to coordinates X and Y
        x, y = m(longitude, latitude)
    
        #Plot the points on the map
        pl.plot(x,y,'-', label=cat, color=colors[cat])
    
    lg = pl.legend()
    lg.get_frame().set_facecolor('grey')
    

![enter image description here](http://i.stack.imgur.com/Z4X2U.png)

