/
explain_symbols.rst_
656 lines (546 loc) · 39.3 KB
/
explain_symbols.rst_
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
**-S**\ [*symbol*][*size*]
Plot symbols (including vectors, wedges, fronts, decorated or quoted lines).
If present, *size* is symbol size in the default unit set by
:term:`PROJ_LENGTH_UNIT` (unless **c**, **i**, or **p** is appended). If the symbol
code (see below) is not given it will be read from the last column in
the input data; this scheme cannot be used in conjunction with binary input.
Optionally, append **c**, **i**, or **p** to indicate that the size information
in the input data is in units of cm, inch, or point, respectively [Default is
:term:`PROJ_LENGTH_UNIT`]. **Note**: If you provide *both* size and symbol via the
input file you *must* use :term:`PROJ_LENGTH_UNIT` to indicate the unit
used for the symbol size or append the units to the sizes listed in the file.
If symbol sizes are expected via one or more data columns then you may convert
those values to suitable symbol sizes via the **-i** mechanism. The general
input expectations are:
*coordinates* [ *value* ] [ *parameters* ] [ *symbol* ]
where *coordinates* is two or three columns specifying the location of a point,
the optional *value* is required when |-C| is used to control color, the optional
*parameters* is required when no symbol size is specified, and the trailing
text with leading *symbol* code is required when the symbol code is not specified
on the command line. **Note**: *parameters* may represent more than one *size*
column as some symbols require several parameters to be defined (e.g., a circle
just needs one column, a rectangle needs two dimensions, while an ellipse needs an
orientation and two dimensions, and so on); see specifics below. When there is only
a single parameter we will refer to it as *size*.
You can also change symbols by adding the required |-S| option to any of
your multi-segment headers.
We will first outline the 14 basic geometric symbols that only require
a *single* parameter: *size*.
.. figure:: /_images/GMT_base_symbols1.*
:width: 600 px
:align: center
The 14 basic geometric symbols available, shown with their symbol codes.
Four symbols (**-**\ \|\ **+**\ \|\ **x**\ \|\ **y**) are line-symbols only
(|-W|), one (the point **p** only takes a color via |-G|) while the rest
may have outline (|-W|) and fill (|-G|) specified.
The thin circles represent the circumscribing circle of the same size.
**-S-**\ *size*
x-dash (-). *size* is the length of a short horizontal (x-dir) line segment.
**-S+**\ *size*
Plus (+). *size* is diameter of circumscribing circle.
**-Sa**\ *size*
St\ **a**\ r. *size* is diameter of circumscribing circle.
**-Sc**\ *size*
**c**\ ircle. *size* is diameter of circle.
**-Sd**\ *size*
**d**\ iamond. *size* is diameter of circumscribing circle.
**-Sg**\ *size*
Octa\ **g**\ on. *size* is diameter of circumscribing circle.
**-Sh**\ *size*
**h**\ exagon. *size* is diameter of circumscribing circle.
**-Si**\ *size*
**i**\ nverted triangle. *size* is diameter of circumscribing circle.
**-Sn**\ *size*
Pe\ **n**\ tagon. *size* is diameter of circumscribing circle.
**-Sp**\ *size*
**p**\ oint. No size needs to be specified (1 pixel is used).
**-Ss**\ *size*
**s**\ quare. *size* is diameter of circumscribing circle.
**-St**\ *size*
**t**\ riangle. *size* is diameter of circumscribing circle.
**-Sx**\ *size*
Cross (x). *size* is diameter of circumscribing circle.
**-Sy**\ *size*
y-dash (\|). *size* is the length of a short vertical (y-dir) line segment.
**Notes**: (1) The uppercase symbols **A**, **C**, **D**, **G**, **H**, **I**, **N**,
**S**, **T** are normalized to have the same *area* as a circle with
diameter *size*, while the *size* of the corresponding lowercase symbols
refers to the diameter of a circumscribed circle. (2) The stroke-only symbols
**x**, **y**, **+** and **-** will derive their pen widths from the symbol size
and their pen color from |-G| or |-C|. In that sense they behave as the other
symbols (but no outline). You can override this behavior by specifying |-W|,
modify it by adjusting :term:`MAP_STROKE_WIDTH` [15%], or set it to zero to
rely on pen defaults (and |-W|).
The next collection shows five symbols that require two or more parameters, and
some have optional modifiers to enhance the symbol appearance.
.. figure:: /_images/GMT_base_symbols2.*
:width: 600 px
:align: center
Five basic geometric multi-parameter symbols, shown with their symbol codes.
All take two or three parameters to define the symbol; see below for details.
Upper-case versions **E**, **J**, and **W** are similar to **e**, **j** and **w**
but expect geographic azimuths and distances.
**-Se**\ [*direction*/]\ *major_axis*\ [/*minor_axis*]
**e**\ llipse. If not given, then *direction* (in degrees counter-clockwise from horizontal),
*major_axis*, and *minor_axis* must be found after the *coordinates* [and *value*] columns. This option yields
a Cartesian ellipse whose shape is unaffected by the map projection. If only a single
*argument* is given then we plot a degenerate ellipse (circle) with that diameter.
**-SE**\ [*azimuth*/]\ *major_axis*\ [/*minor_axis*]
Same as **-Se**, except *azimuth* (in degrees east of north) should be
given instead of *direction*. The *azimuth* will be mapped into an angle
based on the chosen map projection (**-Se** leaves the directions
unchanged.) Furthermore, *major_axis* and *minor_axis* must be given in
geographical instead of plot-distance units. For degenerate ellipses (i.e.,
circles) with just a *diameter* given via the input data, use **-SE-**, while on
the command line **-SE**\ *diameter* will plot the degenerate ellipse. For a
linear projection we assume the dimensions are given in the same units as |-R|.
For allowable geographical units, see `Units`_ and append desired unit to the dimension(s);
if dimensions are read from the input then either just append the unit for these values
or append the unit to each dimension in the file (do not do both) [Default is k for km].
The shape of the ellipse will be affected by the properties of the map projection.
**-Sj**\ [*direction*/]\ *width*\ [/*height*]
Rotated rectangle. If not given, then *direction* (in degrees counter-clockwise from
horizontal), *width*, and *height* must be found after the location [and *value*] columns.
If only a single *argument* is given then we plot a degenerate rectangle (square) with given size.
**-SJ**\ [*azimuth*/]\ *width*\ [/*height*]
Same as **-Sj**, except *azimuth* (in degrees east of north) should be
given instead of *direction*. The *azimuth* will be mapped into an angle
based on the chosen map projection (**-Sj** leaves the directions
unchanged.) Furthermore, the two dimensions must be given in geographical
instead of plot-distance units. For a degenerate rectangle (i.e., square)
with one *dimension* expected to be given via the input data, use **-SJ-**, while on
the command line **-SJ**\ *side* will plot the degenerate rectangle (square). For
a linear projection we assume the dimensions are given in the same units as |-R|.
For allowable geographical units, see `Units`_ and append desired unit to the dimension(s);
if dimensions are read from the input then either just append the unit for these values
or append the unit to each dimension in the file (do not do both) [Default is k for km].
The shape of the rectangle will be affected by the properties of the map projection.
**-Sr**\ *width*/*height*
**r**\ ectangle. If *width*/*height* are not given, then these
dimensions must be found after the location [and *value*] columns. Alternatively, append **+s**
and then the diagonal corner coordinates are expected after the location [and *value*] columns instead.
**-SR**\ *width*/*height*/*radius*
**R**\ ounded rectangle. If *width*/*height*/*radius* are not given, then the
two dimensions and corner radius must be found after the location [and *value*] columns.
**-Sw**\ [*outer*\ [/*startdir*/*stopdir*]][**+a**\ [*dr*]][**+i**\ [*inner*]][**+p**\ *pen*][**+r**\ [*da*]]
Pie **w**\ edge. Give the outer diameter *outer*, *startdir* and *stopdir*.
These are directions (in degrees counter-clockwise from horizontal) for wedge.
Parameters not appended are read from file after the location [and *value*] columns.
Append **+i** and append a nonzero inner diameter *inner* or it will be read last [0].
Append **+a**\ [*dr*] to draw the arc line (at inner and outer diameter);
if *dr* is appended then we draw all arc lines separated radially by *dr*.
Append **+r**\ [*da*] to draw radial lines (at start and stop directions)
if *da* is appended then we draw all radial lines separated angularly by *da*.
These spider-web lines are drawn using the current pen unless **+p**\ *pen* is added.
**-SW**\ [*outer*\ [/*startaz*/*stopaz*]][**+a**\ [*dr*]][**+i**\ [*inner*]][**+p**\ *pen*][**+r**\ [*da*]]
Same as **-Sw**, except azimuths (in degrees east of north) should
be given instead of the two directions. The azimuths will be mapped
into angles based on the chosen map projection (**-Sw** leaves the
directions unchanged). The two diameters are expected in geographic units.
For allowable geographical units, see `Units`_ and append desired unit to the dimension(s);
if dimensions are read from the input then either just append the unit for these values
or append the unit to each dimension in the file (do not do both) [Default is k for km].
However, if specified on the command line we also accept plot dimension units.
Append **+i** and append a nonzero inner diameter *inner* or it will be read last [0].
Append **+a**\ [*dr*] to draw the arc line (at inner and outer diameter);
if *dr* is appended then we draw all arc lines separated radially by *dr*.
Append **+r**\ [*da*] to draw radial lines (at start and stop directions)
if *da* is appended then we draw all radial lines separated angularly by *da*.
These spider-web lines are drawn using the current pen unless **+p**\ *pen* is added.
Text is normally placed with :doc:`text` but there are times we wish to treat a character
of even a string as a symbol to be plotted:
.. figure:: /_images/GMT_base_symbols3.*
:width: 600 px
:align: center
A text symbol can be any letter or string (up to 256 characters) and you may specify
specific fonts (size and type) and control outline and the fill properties. Note there
is no mechanism to perfectly center the string; see |-D| to make a simple global adjustment.
**-Sl**\ *size*\ **+t**\ *string*\ [**+a**\|\ **A**\ *angle*]\ [**+f**\ *font*][**+j**\ *justify*]
**l**\ etter or text string (less than 256 characters). Give size, and
append **+t**\ *string* after the size. **Note**: The size is only approximate;
no individual scaling is done for different characters. Remember to
escape special characters like \*. Optionally, you may append **+a** to change the
angle with the horiontal [0] or use **+A** to indicate map azimuth instead, **+f**\ *font*
to select a particular font [Default is :term:`FONT_ANNOT_PRIMARY`] and
**+j**\ *justify* to change justification [CM].
The next type of symbol is the horizontal or vertical bar:
.. figure:: /_images/GMT_base_symbols4.*
:width: 700 px
:align: center
We may place vertical (**b**) or horizontal (**B**) bars, and they may extend from the
*base* of your choosing. The thickness of a bar can be a given dimension or can be
specified in the units of that axis so its width scales with the projection and region.
Using modifiers **+v** or **+i** you can also plot multi-band bars with colors set via |-C|,
and **+s** can represent those as groups of individual bars instead.
**-Sb**\ [*size*\ [**c**\|\ **i**\|\ **p**\|\ **q**]][**+b**\ \|\ **B**\ [*base*]][**+v**\|\ **i**\ *ny*][**+s**\ [*gap*]]
Vertical **b**\ ar extending from *base* to y. The *size* is bar width.
Append **q** if *size* is a quantity in x-units [Default is plot-distance units **c**\|\ **i**\|\ **p**].
By default, *base* = 0. Append **+b**\ [*base*] to change this
value. If *base* is not appended then we read it from the last input
data column. Use **+B**\ [*base*] if the bar height is measured relative
to *base* [Relative to origin]. Normally, the bar requires a single input *y*-value.
To plot multi-band bars, please append **+v**\|\ **i**\ *ny*, where *ny* indicates the
total number of bands in the bar (and hence the number of values required to follow
the x,y coordinate pair in the input). Here, **+i** means we must accumulate the
bar values from the increments *dy*, while **+v** means we get the complete
values relative to *base* in increasing order. Normally, the bands are plotted as sections of a final single bar.
Use **+s** to instead split the bar into *ny* side-by-side, individual and thinner bars. The
optional *gap* is a percent (of fraction) of *size* for adding gaps between the bars [none],
where *size* is the combined width of all the individual, thinner bars plus the gaps.
Multi-band bars require |-C| with one color per band (CPT z-values must be 0, 1, ..., *ny* - 1).
Thus, input records are either (*x y1 y2 ... yn*) or (*x dy1 dy2 ... dyn*).
**-SB**\ [*size*\ [**c**\|\ **i**\|\ **p**\|\ **q**]][**+b**\ \|\ **B**\ [*base*]][**+v**\|\ **i**\ *nx*][**+s**\ [*gap*]]
Horizontal **B**\ ar extending from *base* to x. The *size* is bar width.
Append **q** if *size* is a quantity in y-units [Default is plot-distance units **c**\|\ **i**\|\ **p**].
By default, *base* = 0. Append **+b**\ [*base*] to change this
value. If *base* is not appended then we read it from the last input
data column. Use **+B**\ [*base*] if the bar length is measured relative
to *base* [Relative to origin]. Normally, the bar requires a single input *x*-value.
To plot multi-band bars, please append **+v**\|\ **i**\ *nx*, where *nx* indicates the
total number of bands in the bar (and hence the number of values required to follow
the x,y coordinate pair in the input). Here, **+i** means we must accumulate the
bar value from the increments *dx*, while **+v** means we get the complete
values relative to *base* in increasing order. Normally, the bands are plotted as sections of a final single bar.
Use **+s** to instead split the bar into *nx* side-by-side, individual and thinner bars. The
optional *gap* is a percent (of fraction) of *size* for adding gaps between the bars [none],
where *size* is the combined width of all the individual, thinner bars plus the gaps.
Multi-band bars require |-C| with one color per band (CPT z-values must be 0, 1, ..., *nx* - 1).
Thus, input records are either (*x1 y x2 ... xn*) or (*dx1 y dx2 ... dxn*).
The next family of symbols are all different types of *vectors*. Apart from requiring parameters
such as *length* and *direction* (or optionally the coordinates of the end point), we also
offer a rich set of modifiers to customize the vector head(s).
.. figure:: /_images/GMT_base_symbols5.*
:width: 600 px
:align: center
There are three classes of vectors: Cartesian (left), circular (center) and geographic (right).
While their use is slightly different, they all share common modifiers that affect how
they are displayed.
**-Sm**\ *size*\ [**+**\ *vecmodifiers*]
**m**\ ath angle arc, optionally with one or two arrow heads [Default is
no arrow heads]. The *size* is the length of the vector head. Arc width
is set by |-W|, with vector head outlines defaulting to half of arc width.
The *radius* of the arc and its *start* and *stop* directions (in degrees
counter-clockwise from horizontal) must be given after the location [and *value*]
columns. See `Vector Attributes`_ for specifying other attributes.
**-SM**\ *size*\ [**+**\ *vecmodifiers*]
Same as **-Sm** but switches to straight angle symbol if *start* and *stop*
angles subtend 90 degrees exactly.
**-Sv**\ *size*\ [**+**\ *vecmodifiers*]
**v**\ ector. The *direction* (in degrees counter-clockwise from
horizontal) and *length* must be found after the location [and *value*] columns,
and *size*, if not specified on the command-line, should be present as well,
pushing the other items to later columns.
The *size* is the length of the vector head. Vector stem width is set by |-W|,
with head outline pen width defaulting to half of stem pen width.
See `Vector Attributes`_ for specifying this and other attributes.
**-SV**\ *size*\ [**+**\ *vecmodifiers*]
Same as **-Sv**, except *azimuth* (in degrees east of north) should be
given instead of *direction*. The *azimuth* will be mapped into an angle
based on the chosen map projection (**-Sv** leaves the directions
unchanged.) If your *length* is not in plot units but in arbitrary
user units (e.g., a rate in mm/yr) then you can use the **-i** option
to scale the corresponding column via the **+s**\ *scale* modifier.
See `Vector Attributes`_ for specifying symbol attributes.
**-S=**\ *size*\ [**+**\ *vecmodifiers*]
Geographic vector. Here, *azimuth* (in degrees east from north) and geographical *length*
must be found after the location [and *value*] columns. The *size* is the length of the
vector head. Vector width is set by |-W|. See `Vector Attributes`_
for specifying attributes. **Note**: Geovector stems are drawn as thin
filled polygons and hence pen attributes like dashed and dotted are
not available. For allowable geographical units for the length, see `Units`_ [k].
If your *length* is not in distance units but in arbitrary user units (e.g., a rate in
mm/yr) then you can use the **-i** option to scale the corresponding column via the **+s**\ *scale* modifier.
The next symbol is the programmable *custom* symbol:
.. figure:: /_images/GMT_base_symbols6.*
:width: 600 px
:align: center
Custom symbols are designed using the :ref:`Custom Symbol Macro Language <Custom_symbols>`.
We supply about 40 custom symbols, and users have contributed discipline-specific
symbols for structural geology and marine biology that you can explore from
the :ref:`RESOURCES page <symbols_gallery>`, so you have lots of
examples to use as a template. The language allows you to design symbols that
take many parameters and can make decisions based on these parameters.
**-S**\ [**k**\ *name*\ [/\ *size*]]
A **k**\ ustom symbol. We will look for a symbol definition file called *name*\ .def in
(1) the current directory, (2) in ~/.gmt or (3) in **$GMT_SHAREDIR**/custom.
The symbol in the definition file is of normalized unit size by default;
the appended *size* will scale the symbol accordingly. Users may create their own
custom \*.def files; see `Custom Symbols`_ below.
Alternatively, you can supply an EPS file instead of a \*.def file and
we will scale and place that graphic as a symbol. If *size* is not given then we
expect in from the input file. **Note**: To also give the name of the custom
symbol via the input, the trailing text must start with the symbol name which must
include the leading **k**. The *size* must either be given as a numerical column
(as for all other symbols) or be added to the name with the required slash.
The last group of symbols are all special *lines* with embellishments along them.
The first symbol is called a *front* and has specific
symbols distributed along the curve. Typical uses are weather fronts, fault lines,
and more. While the line appearance is controlled by |-W|, there are many modifiers
to control the selection and appearance of the along-line symbols:
.. figure:: /_images/GMT_base_symbols7.*
:width: 600 px
:align: center
Fronts offer various symbols, such as squares, triangles and circles that may be
plotted centered or as a half-symbols on one side. Special options exist for indicating
motion (e.g., faults) along a line.
**-Sf**\ [±]\ *gap*\ [/*size*][**+l**\|\ **+r**][**+b**\|\ **c**\|\ **f**\|\ **s**\ [*angle*]\ \|\ **t**\ \|\ **v**][**+o**\ *offset*][**+p**\ [*pen*]].
Draw a **f**\ ront. Supply distance *gap* between symbols and symbol *size*.
If *gap* is negative, it is interpreted to mean the *number* of symbols along the
front instead. If *gap* has a leading + then we use the value exactly as given
[Default will start and end each line with a symbol, hence the *gap* is adjusted to fit].
If *size* is missing it is set to 30% of the *gap*, except when *gap* is negative
and *size* is thus required. Append **+l** or **+r** to plot symbols on the left or
right side of the front [Default is centered]. Append **+**\ *type* to
specify which symbol to plot: **b**\ ox, **c**\ ircle, **f**\ ault,
**s**\ lip, **t**\ riangle or in\ **v**\ erted triangle. [Default is **f**\ ault]. Slip means
left-lateral or right-lateral strike-slip arrows (centered is not an
option). The **+s** modifier optionally accepts the angle used to draw
the vector [20]. Alternatively, use **+S** which draws arcuate arrow
heads. Append **+o**\ *offset* to offset the first symbol from the
beginning of the front by that amount [0]. The chosen symbol is drawn
with the same pen as set for the line (i.e., via |-W|). To use an
alternate pen, append **+p**\ *pen*. To skip the outline, just use
**+p** with no argument. To make the main front line invisible, add **+i**. **Note**:
By placing **-Sf** options in the segment headers that differ from the one on
the command line you can change the front types on a segment-by-segment basis.
The next type of embellished line is called a *quoted* line, which is our term for
a line with text along it, similar to an annotated contour in a contour map. There is
a rich set of directives and modifiers available to select a specific outcome:
.. figure:: /_images/GMT_base_symbols8.*
:width: 600 px
:align: center
Quoted lines (**-Sq**) are lines with text. However, the text can be static, read via files,
or be quantities computed along the line. This example just shows a wiggly line with
a text-aligned label. A rich set of modifier controls the appearance.
**-Sq**\ **d**\|\ **D**\|\ **f**\|\ **l**\|\ **L**\|\ **n**\|\ **N**\|\ **s**\|\ **S**\|\ **x**\|\ **X**\ *posinfo*\ [:*labelinfo*]
**q**\ uoted line, i.e., lines with occasional annotations such as contours. Append
a required algorithm code and *posinfo* that control the placement of labels along the quoted lines.
**Note**: The colon separates the algorithm settings from the label information.
Choose among six controlling algorithms:
**d**\ *dist*\ [**c**\|\ **i**\|\ **p**][/\ *frac*] or **D**\ *dist*\ [**d**\|\ **e**\|\ **f**\|\ **k**\|\ **m**\|\ **M**\|\ **n**\|\ **s**][/\ *frac*]
For lower case **d**, give distances between labels on the plot in
your preferred measurement unit **c** (cm), **i** (inch), or **p**
(points), while for upper case **D**, specify distances in map units
and append the unit; choose among **e** (m), **f** (foot), **k**
(km), **M** (mile), **n** (nautical mile) or **u** (US survey foot),
and **d** (arc degree), **m** (arc minute), or **s** (arc second).
[Default is 10\ **c** or 4\ **i**]. As an option, you can append
append *frac* which will place the first label at the distance *d = dist*
:math:`\times` *frac* from the start of a line (and every
*dist* thereafter). If not given, *frac* defaults to 0.25.
**f**\ *file.txt*\ [/*slop*\ [**c**\|\ **i**\|\ **p**]]
Read the ASCII file *file.txt* and places labels at locations in the
file that best matches locations along the quoted lines. Labels will
only be placed if the coordinates match the line coordinates to
within a distance of *slop* (append desired unit or we use
:term:`PROJ_LENGTH_UNIT`). The default *slop* is zero, meaning only
exact coordinate matches will do.
**l**\|\ **L**\ *line1*\ [,\ *line2*,...]
Give the coordinates of the end points for one or more comma-separated straight line segments.
Labels will be placed where these lines intersect the quoted lines.
The format of each *line* specification is *start_lon*/*start_lat*/*stop_lon*/*stop_lat*.
Both *start_lon*/*start_lat* and *stop_lon*/*stop_lat* can be replaced by a 2-character key
that uses the justification format employed in **text** to indicate a point on the frame or
center of the map, given as [LCR][BMT]. Alternatively, select **L** to interpret the point
pairs as defining great circle segments [Default is straight lines].
**n**\|\ **N**\ *n_label*\ [/*min_dist*\ [**c**\|\ **i**\|\ **p**]]
Specify the number of equidistant labels for quoted lines
[1]. Upper case **N** starts labeling exactly at the start of the
line [Default centers them along the line]. **N**-1 places one
justified label at start, while **N**\ +1 places one justified label
at the end of quoted lines. Optionally, append
/*min_dist*\ [**c**\|\ **i**\|\ **p**] to enforce a
minimum distance separation between successive labels.
**s**\|\ **S**\ *n_label*\ [/*min_dist*\ [**c**\|\ **i**\|\ **p**]]
Same as **n**\|\ **N**\ *n_label* but implies that the input data are
first to be converted into a series of 2-point line segments before plotting.
**x**\|\ **X**\ *xfile.txt*
Read the ASCII multisegment file *xfile.txt* and places labels at the
intersections between the quoted lines and the lines in *xfile.txt*.
**X** will resample the lines first along great-circle arcs.
In addition, you may optionally append
**+r**\ *radius*\ [**c**\|\ **i**\|\ **p**] to set a minimum
label separation in the x-y plane [no limitation].
The optional *labelinfo* controls the specifics of the label
formatting. If not provided we default to the text "N/A". The argument
consists of a concatenated string made up of any of the following modifiers:
**+a**\ *angle*
Force annotations at a fixed angle, **+an** for line-normal, or
**+ap** for line-parallel [Default].
**+c**\ *dx*\ [/*dy*]
Set clearance between label and optional text box. Append
**c**\|\ **i**\|\ **p** to specify the unit or % to indicate a
percentage of the label font size [15%].
**+d**\ [*pen*]
Turn on debug, which will draw helper points and lines to illustrate
the workings of the quoted line setup. Optionally append the pen
to use [:term:`MAP_DEFAULT_PEN`].
**+e**
Delay plotting of the text. This is used to build a clip path
based on the text, then lay down other overlays while that clip path
is in effect, then turning off clipping with clip **-Cs** which
finally plots the pending text.
**+f**\ *font*
Set the desired font [Default :term:`FONT_ANNOT_PRIMARY` with its
size changed to 9p].
**+g**\ [*color*]
Select opaque text boxes [Default is transparent]; optionally
specify the color [Default is :term:`PS_PAGE_COLOR`].
**+i**
Make the main quoted line invisible [Draw it per |-W|].
**+j**\ *just*
Set label justification [Default is MC]. Ignored when
**-SqN**\|\ **n**\ +\|-1 is used.
**+l**\ *label*
Set the constant label text. **Note**: if the text length exceeds
the line length then no text will appear.
**+L**\ *flag*
Set the label text according to the specified flag:
**+Lh**
Take the label from the current segment header (first scan for
an embedded **-L**\ *label* option, if not use the first word
following the segment flag). For multiple-word labels, enclose
entire label in double quotes.
**+Ld**
Take the Cartesian plot distances along the line as the label;
append **c**\|\ **i**\|\ **p** as the unit [Default is
:term:`PROJ_LENGTH_UNIT`].
**+LD**
Calculate actual map distances; append
**d\|e\|f\|k\|n\|M\|n\|s** as the unit [Default is
**d**\ (egrees), unless label placement was based on map
distances along the lines in which case we use the same unit
specified for that algorithm]. Requires a map projection to be
used.
**+Lf**
Use text after the 2nd column in the fixed label location file
as the label. Requires the fixed label location setting.
**+Lx**
As **+Lh** but use the headers in the *xfile.txt* instead.
Requires the crossing file option.
**+n**\ *dx*\ [/*dy*]
Nudge the placement of labels by the specified amount (append
**c**\|\ **i**\|\ **p** to specify the units). Increments
are considered in the coordinate system defined by the
orientation of the line; use **+N** to force increments in the
plot x/y coordinates system [no nudging]. Not allowed with **+v**.
**+o**
Select rounded rectangular text box [Default is rectangular].
Not applicable for curved text (**+v**) and only makes sense for
opaque text boxes.
**+p**\ [*pen*]
Draw outline of text boxes [Default is no outline];
optionally specify pen for outline [Default is width = 0.25p,
color = black, style = solid].
**+r**\ *min_rad*
Will not place labels where the line's radius of curvature is
less than *min_rad* [Default is 0].
**+t**\ [*file*]
Save line label *x, y, angle, text* to *file* [Line_labels.txt].
**+u**\ *unit*
Append *unit* to all line labels [Default is no unit].
**+v**
Specify curved labels following the path [Default is straight labels].
**+w**
Specify how many (*x*,\ *y*) points will be used to estimate smooth
label angles [Default is 10].
**+x**\ [*first*,\ *last*]
Append the suffixes *first* and *last* to the corresponding labels.
This modifier is only available when **-SqN2** is in effect. Used
to annotate the start and end of a line (e.g., a cross-section),
append two text strings separated by comma
[Default just adds a prime to the second label].
**+=**\ *prefix*
Prepend *prefix* to all line labels [Default is no prefix].
**Note**: By placing **-Sq** options in the segment headers that differ from the one on
the command line you can change the quoted text attributes on a segment-by-segment basis.
The final type of embellished line is called a *decorated* line (**-S~**). It is a hybrid
between a *front* and *quoted* lines in that it offers symbols similar to a front
but the placement can be specified in ways similar to the quoted line. However, no built-in
clipping exists, such as for quoted lines:
.. figure:: /_images/GMT_base_symbols9.*
:width: 600 px
:align: center
Decorated lines with eleven squares evenly spaced along the line. By default,
the symbol is aligned with the line trend, but numerous modifiers allow you to
customize the appearance, including to make the line invisible.
**-S~**\ **d**\|\ **D**\|\ **f**\|\ **l**\|\ **L**\|\ **n**\|\ **N**\|\ **s**\|\ **S**\|\ **x**\|\ **X**\ *posinfo*\ :*symbolinfo*
Decorated line, i.e., lines with symbols placed along them. Append
a required algorithm code and *posinfo* that control the placement of symbols along the decorated lines.
**Note**: The colon separates the algorithm settings from the required symbol information.
Choose among six controlling algorithms:
**d**\ *dist*\ [**c**\|\ **i**\|\ **p**][/\ *frac*] or **D**\ *dist*\ [**d**\|\ **e**\|\ **f**\|\ **k**\|\ **m**\|\ **M**\|\ **n**\|\ **s**][/\ *frac*]
For lower case **d**, give distances between symbols on the plot in
your preferred measurement unit **c** (cm), **i** (inch), or **p**
(points), while for upper case **D**, specify distances in map units
and append the unit; choose among **e** (m), **f** (foot), **k**
(km), **M** (mile), **n** (nautical mile) or **u** (US survey foot),
and **d** (arc degree), **m** (arc minute), or **s** (arc second).
[Default is 10\ **c** or 4\ **i**]. As an option, you can append
append *frac* which will place the first symbol at the distance *d = dist*
:math:`\times` *frac* from the start of a line (and every
*dist* thereafter). If not given, *frac* defaults to 0.25.
**f**\ *file.txt*\ [/*slop*\ [**c**\|\ **i**\|\ **p**]]
Read the ASCII file *file.txt* and place symbols at locations in the
file that matches locations along the decorated lines. Symbols will
only be placed if the coordinates match the line coordinates to
within a distance of *slop* (append desired unit or we use
:term:`PROJ_LENGTH_UNIT`). The default *slop* is zero, meaning only
exact coordinate matches will do.
**l**\|\ **L**\ *line1*\ [,\ *line2*,...]
Give the coordinates of the end points for one or more comma-separated straight line segments.
Symbols will be placed where these lines intersect the decorated lines.
The format of each *line* specification is *start_lon*/*start_lat*/*stop_lon*/*stop_lat*.
Both *start_lon*/*start_lat* and *stop_lon*/*stop_lat* can be replaced by a 2-character key
that uses the justification format employed in **text** to indicate a point on the frame or
center of the map, given as [LCR][BMT].
**L** will interpret the point pairs as defining great circles [Default is straight line].
**n**\|\ **N**\ *n_symbol*\ [/*min_dist*\ [**c**\|\ **i**\|\ **p**]]
Specify the number of equidistant symbols for decorated lines
[1]. Upper case **N** starts placing symbols exactly at the start of the
line [Default centers them along the line]. **N**-1 places one symbol
at start, while **N**\ +1 places one symbol at the end of decorated lines.
Optionally, append /*min_dist*\ [**c**\|\ **i**\|\ **p**] to enforce a
minimum distance separation between successive symbols.
**s**\|\ **S**\ *n_symbol*\ [/*min_dist*\ [**c**\|\ **i**\|\ **p**]]
Same as **n**\|\ **N**\ *n_symbol* but implies that the input data are
first to be converted into a series of 2-point line segments before plotting.
**x**\|\ **X**\ *xfile.txt*
Read the ASCII multisegment file *xfile.txt* and places symbols at the
intersections between the decorated lines and the lines in *xfile.txt*.
**X** will resample the lines first along great-circle arcs.
The required *symbolinfo* controls the specifics of the symbol selection and
formatting and consists of a concatenated string made up of any of
the following modifiers:
**+a**\ *angle*
Force symbols at a fixed angle, **+an** for line-normal, or
**+ap** for line-parallel [Default].
**+d**\ [*pen*]
Turn on debug, which will draw helper points and lines to illustrate
the workings of the decorated line setup. Optionally append the pen
to use [:term:`MAP_DEFAULT_PEN`].
**+g**\ [*fill*]
Set the symbol fill [no fill].
**+i**
Make the main decorated line invisible [Draw it using pen settings provided by |-W|].
**+n**\ *dx*\ [/*dy*]
Nudge the placement of symbols by the specified amount (append
**c**\|\ **i**\|\ **p** to specify the units). Increments
are considered in the coordinate system defined by the
orientation of the line; use **+N** to force increments in the
plot x/y coordinates system [no nudging].
**+p**\ [*pen*]
Draw the outline of symbols [Default is no outline];
optionally specify pen for outline [Default is width = 0.25p,
color = black, style = solid].
**+s**\ <symbol><size> or **+sk**\ *customsymbol*/*size*
Specify the code and size of the decorative symbol.
Custom symbols need to be simple, i.e., not require data columns,
or be a single EPS file. Hence, valid symbols are limited to the
plain geometric one-parameter symbols and the custom symbol (**k**).
**+w**
Specify how many (*x*,\ *y*) points will be used to estimate
symbol angles [Default is 10].
If neither **+g** nor **+p** are set we select the default pen outline (:term:`MAP_DEFAULT_PEN`).
**Note**: By placing **-S~** options in the segment headers that differ from the one on
the command line you can change the decorated lines on a segment-by-segment basis.