Plot trajectories on an map using matplotlib-basemap

#! /usr/bin/python

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
with a line connecting
all points. Mi final idea is to draw a line connecting the points associated with each path, How I can do this? or
How
should I structure my data to
plot the different
paths?

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?

Boris,

I don't have the time to look into this in great detail. However, in
general, you can get your current axes and figure objects with the
following:

ax = pl.gca()
fig = pl.gcf()

Then you can use the 'annotate' method of 'ax' to call out each path. (See
matplotlib,org/examples for help with its use). And then use:

fig.set_figwidth(7) # example
fig.set_figheight(7) # example

...to make the figure bigger. Finally, use

fig.tight_layout()

to fill up the newly enlarged figure.

Hope that helps,
-paul

···

On Mon, Jan 28, 2013 at 9:41 PM, Boris Vladimir Comi < glez_b@...4243...> wrote:

  #! /usr/bin/python
    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 with a
line connecting all points. Mi final idea is to draw a line connecting
the points associated with each path, How I can do this? or How should I
structure my data to plot the different paths?

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?