Exemplo n.º 1
0
def grafica_track(satelite, debris):
    gmt = GMT(config={'BASEMAP_TYPE': 'fancy'})

    gmt.pscoast(
        R='0/280/-75/75',  #g
        J='M6i',  #'G70/-51/5i'
        B='30g30',  # grid
        N='1',
        S=(173, 216, 230),  # wet fill color 
        G=(144, 238, 144),  # dry fill color
        W='thinnest')  # shoreline pen

    gmt.psxy(
        satelite,  #'../Encuentro/archivos/15482U',
        R='',
        J='',
        O='-',
        S='t0.05',
        K='K',
        G='red')

    gmt.psxy(
        debris,  #'../Encuentro/archivos/27386U',
        R='',
        J='',
        O='',
        S='t0.05',
        K='K',
        G='blue')

    gmt.save('../visual/archivos/ploteo_track.ps')

    print 'Grafico Terminado'
Exemplo n.º 2
0
def gmt_map(event_lats=None,
            event_lons=None,
            station_lats=None,
            station_lons=None,
            **kwargs):

    with_stations = False
    if kwargs.get('stations', False):
        with_stations = True

    with_events = False
    if kwargs.get('events', False):
        with_events = True

    gmt = GMT(config={'BASEMAP_TYPE': 'fancy'})

    lat_min = min(station_lats + event_lats)
    lat_max = max(station_lats + event_lats)
    lon_min = min(station_lons + event_lons)
    lon_max = max(station_lons + event_lons)

    lat_offset = (lat_max - lat_min) * 0.3
    lon_offset = (lon_max - lon_min) * 0.3

    gmt.pscoast(R='%i/%i/%i/%i' % (lon_min - lon_offset, lon_max + lon_offset,
                                   lat_min - lat_offset, lat_max + lat_offset),
                J='M10c',
                B='4g4',
                D='f',
                S=(114, 159, 207),
                G=(233, 185, 110),
                W='thinnest')

    if station_lats and station_lons and with_stations:
        gmt.psxy('-St0.5c',
                 R=True,
                 J=True,
                 G=(0, 255, 123),
                 in_columns=[station_lons, station_lats])

    if event_lats and event_lons and with_events:
        gmt.psxy('-Sa0.2c',
                 R=True,
                 J=True,
                 G=(255, 0, 0),
                 in_columns=[event_lons, event_lats])

    gmt.save('mapplot.pdf')
Exemplo n.º 3
0
from gmtpy import GMT

gmt = GMT(config={'BASEMAP_TYPE': 'fancy'})

gmt.pscoast(
    R='5/15/52/58',  # region
    J='B10/55/55/60/10c',  # projection
    B='4g4',  # grid
    D='f',  # resolution
    S=(114, 159, 207),  # wet fill color 
    G=(233, 185, 110),  # dry fill color
    W='thinnest')  # shoreline pen

gmt.save('example1.pdf')
gmt.save('example1.eps')
Exemplo n.º 4
0
from gmtpy import GMT, cm, GridLayout, FrameLayout, golden_ratio
import numpy as np

# some data to plot...
x = np.linspace(0, 5, 101)
ys = (np.sin(x) + 2.5, np.cos(x) + 2.5)

gmt = GMT(config={'PAGE_COLOR': '247/247/240'})

layout = GridLayout(1, 2)

widgets = []
for iwidget in range(2):
    inner_layout = FrameLayout()
    layout.set_widget(0, iwidget, inner_layout)
    widget = inner_layout.get_widget('center')
    widget.set_horizontal(7 * cm)
    widget.set_vertical(7 * cm / golden_ratio)
    widgets.append(widget)

#gmt.draw_layout( layout )
#print layout

for widget, y in zip(widgets, ys):
    gmt.psbasemap(R=(0, 5, 0, 5),
                  B='%g:Time [ s ]:/%g:Amplitude [ m ]:SWne' % (1, 1),
                  *widget.XYJ())

    gmt.psxy(R=True, W='2p,blue,o', in_columns=(x, y), *widget.XYJ())

gmt.save('example4.pdf', bbox=layout.bbox())
Exemplo n.º 5
0
def gmt_north_america(**kwargs):
   '''
   Give rf_data as ([values],[time])
   '''
   from gmtpy import GMT
   #get kwargs
   fname = kwargs.get('fname','USA_map.pdf')
   station_data = kwargs.get('station_data','none')
   quake_locs   = kwargs.get('quake_locs','none')
   rf_data      = kwargs.get('rf_data','none')
   header       = kwargs.get('header','none')

   #topo data
   etopo='/geo/home/romaguir/utils/ETOPO5.grd'
   topo_grad='/geo/home/romaguir/utils/topo_grad.grd'

   #colormap
   colombia='/geo/home/romaguir/utils/colors/colombia'

   region = '-128/-66/24/52'
   scale = 'l-100/35/33/45/1:30000000'

   #initialize gmt
   gmt = GMT(config={'BASEMAP_TYPE':'fancy',
                     'HEADER_FONT_SIZE':'14'})
                     #'COLOR_BACKGROUND':'-',  :setting this to '-' plots z are transparent
                     #'COLOR_FOREGROUND':'-'})

   #make colormap
   cptfile = gmt.tempfilename()
   gmt.makecpt(C=colombia,T='-4000/4950/100',Z=True,out_filename=cptfile,D='i')

   #make gradient
   #topo_grad = gmt.tempfilename()
   #gmt.grdgradient(etopo,V=True,A='100',N='e0.8',M=True,G=topo_grad,K=False)

   #plot topography
   gmt.grdimage( etopo,
                 R = region,
                 J = scale,
                 C = cptfile,
                 E = '200')
                 #I = '0.5')#topo_grad)

   #plot coastlines
   gmt.pscoast( R=region,
                J=scale,
                B='a10',
                D='l',
                A='500',
                W='thinnest,black,-',
                N='all')

   #plot stations
   if station_data != 'none':
      gmt.psxy( R=region,
                J=scale,
                B='a10',
                S='t0.1',
                G='red',
                in_rows = station_data )


   if quake_locs != 'none':
      eq_region = 'g'
      eq_scale  = 'E-100/40/2.25i'
      gmt.pscoast( R = eq_region,
                   J = eq_scale,
                   B = 'p',
                   A = '10000',
                   G = 'lightgrey',
                   W = 'thinnest',
                   Y = '3.5i',
                   X = '-0.5i' ) 
      gmt.psxy( R = eq_region,
                J = eq_scale,
                S = 'a0.05',
                G = 'blue',
                in_rows = quake_locs )

   #plot receiver function stack
   if rf_data != 'none':
      rf_region = '-0.20/0.20/0/100'
      rf_scale  = 'X1i/-5i'
      gmt.psxy( R = rf_region,
                J = rf_scale,
                #G = 'grey', #fill
                B = '0.25::/10:time (s):NE',
                W = 'thin',
                X = '9i',
                Y = '-3.5i',
                in_columns = rf_data )

      #plot shaded area for positive values
      vals = rf_data[0]
      time = rf_data[1]
      poly_vals_pos = []
      poly_time_pos = []
      for i in range(0,len(vals)):
         val_here = max(0,np.float(vals[i]))
         poly_time_pos.append(time[i])
         poly_vals_pos.append(val_here)

      poly_vals_pos.append(0.0)
      poly_time_pos.append(time[::-1][0])
      poly_vals_pos.append(0.0)
      poly_time_pos.append(time[0])
      gmt.psxy( R = rf_region,
                J = rf_scale,
                G = 'red',
                B = '0.25::/10:time (s):NE',
                W = 'thin',
                in_columns = (poly_vals_pos,poly_time_pos) )

      #plot shaded area for negative values
      '''
      vals = rf_data[0]
      time = rf_data[1]
      poly_vals_neg = []
      poly_time_neg = []
      for i in range(0,len(vals)):
         val_here = min(0,np.float(vals[i]))
         poly_time_neg.append(time[i])
         poly_vals_neg.append(val_here)

      poly_vals_neg.append(0.0)
      poly_time_neg.append(time[::-1][0])
      poly_vals_neg.append(0.0)
      poly_time_neg.append(time[0])
      gmt.psxy( R = rf_region,
                J = rf_scale,
                G = 'blue',
                B = '0.25::/10:time (s):NE',
                W = 'thin',
                in_columns = (poly_vals_neg,poly_time_neg) )
      '''

   #header_file = open('header_file','w')
   #header_file.write('<< EOF')
   #header_file.close()

   #write header information
   if header != 'none':
      stations_text = header['N_traces'] + ' traces in stack'
      events_text   = header['N_events'] + ' events'
      freq_text     = header['frequency']
      decon_text    = 'deconvolution method : ' + header['decon']

      gmt.pstext( in_rows = [(-96,60,12,0,1,'MC',stations_text)],
                  R = region,
                  J = scale,
                  N = True,
                  X = '-8.5i' )
      gmt.pstext( in_rows = [(-96,59,12,0,1,'MC',events_text)],
                  R = region,
                  J = scale,
                  N = True )
      gmt.pstext( in_rows = [(-96,58,12,0,1,'MC',freq_text)],
                  R = region,
                  J = scale,
                  N = True )
      gmt.pstext( in_rows = [(-96,57,12,0,1,'MC',decon_text)],
                  R = region,
                  J = scale,
                  N = True )

   #save figure
   gmt.save(fname)
Exemplo n.º 6
0
def plot_vtk_slice(vtk_slice,
                   theta_range=[0, 360],
                   depth_range=[0, 2885],
                   **kwargs):
    #--------------------------------------------------------------------------------
    '''
   This will plot a cross section of a .vtk file.  Open the .vtk file in paraview,
   choose a slice, and select 'File -> export data'.  This will save the data as
   a .csv file, which can be plotted with this function.

   args--------------------------------------------------------------------------
   vtk_slice: the .csv file
   theta_range: the range in degrees you wish to plot. 
                dtype=tuple
                default=[0,360] (whole earth)
   depth_range: the range in depth you wish to plot.
                dtype=tuple
                default=[0,2885] (whole mantle)

   kwargs------------------------------------------------------------------------
   cmap = colormap to use
          dtype=string
          default='BlueWhiiteOrangeRed'

   data_range = max and min values to use in colorbar.
                dtype=tuple
                default=[-1.0,1.0]

   csteps = number of divisions in colorbar
            dtype=int
            default=100

   cmap_direction = forward or reverse colormap
                    dtype=string
                    default='i'

   fname = filename
           dtype=string
           default='slice.pdf'

   rotation = number of degrees to rotate figure
            dtype=float
            default=90.0 (i.e., rotate from lat coor to colat based coor)

   contour = True or False
   '''

    #get kwargs-------------------------------------------------------------------
    cmap_dir = '/geo/home/romaguir/utils/colors/'
    cmap = kwargs.get('cmap', 'BlueWhiteOrangeRed')
    cmap = cmap_dir + cmap
    data_range = kwargs.get('data_range', [-0.25, 0.25])
    csteps = kwargs.get('csteps', 100)
    cmap_direction = kwargs.get('cmap_direction', 'i')
    fname = kwargs.get('fname', 'slice.pdf')
    rotation = kwargs.get('rotation', 90.0)
    contour = kwargs.get('contour', True)

    #read csv slice (output of paraview)------------------------------------------
    f = pandas.read_csv(vtk_slice)
    p1 = f['Points:0']
    p2 = f['Points:1']
    p3 = f['Points:2']
    dvp = f['dVp()']

    #transform to polar, earth coordinates----------------------------------------
    r, t = cart2polar(p1, p3)
    r *= 6371.0
    t = np.degrees(t)

    print min(dvp), max(dvp)

    #setup GMT plot---------------------------------------------------------------
    gmt = GMT(config={'BASEMAP_TYPE': 'fancy', 'HEADER_FONT_SIZE': '14'})
    region = '{}/{}/{}/{}'.format(theta_range[0], theta_range[1],
                                  6371.0 - depth_range[1],
                                  6371.0 - depth_range[0])
    surf_region = '{}/{}/{}/{}'.format(theta_range[0] - 2, theta_range[1] + 2,
                                       6371.0 - depth_range[1],
                                       6500.0 - depth_range[0])
    scale = 'P6i'  #Polar, 8 inch radius
    cptfile = gmt.tempfilename()
    grdfile = gmt.tempfilename()

    #gmt.makecpt(C=cmap,T='{}/{}/{}'.format(data_range[0],data_range[1],csteps),Z=False,out_filename=cptfile,D=cmap_direction)
    gmt.makecpt(C=cmap,
                T='-0.25/0.25/0.025',
                A=100,
                out_filename=cptfile,
                D=True)

    gmt.surface(in_columns=[t + rotation, r, dvp],
                G=grdfile,
                I='0.5/25',
                T=0.0,
                R=surf_region,
                out_discard=True)
    '''
   #plot the data----------------------------------------------------------------
   gmt.psxy( R=region,
             J=scale,
             #B='a15f15:"":/200f200:""::."":WSne',
             B='a300f300',
             S='s0.20',
             #G='blue',
             C=cptfile,
             in_columns=[t+rotation,r,dvp] )
   '''
    #plot the data----------------------------------------------------------------
    gmt.grdimage(grdfile, R=region, J=scale, B='a300f300', C=cptfile, E='i5')

    #contour the data-------------------------------------------------------------
    if contour == True:
        gmt.grdcontour(grdfile, R=region, J=scale, C=cptfile, W='1')

    #plot 660---------------------------------------------------------------------
    d660 = np.loadtxt('/geo/home/romaguir/utils/660_polar.dat')
    print d660
    gmt.psxy(R=region, J=scale, W='1', in_rows=[d660])

    gmt.save(fname)