---
author: 田冬冬
date: 2025-05-23
---

# -l 选项

{doc}`/module/legend` 模块会读入一个图例文件，并根据图例文件中的内容绘制图例。
图例文件的格式相对复杂，可以实现复杂的图例效果。

**-l** 选项的作用是为当前绘制的符号或线条自动增加一个图例记录到图例文件中。
在绘图结束时 GMT 会自动调用 {doc}`/module/legend` 会生成图例，用户也可以显式
调用 {doc}`/module/legend` 以进一步控制图例的更多属性。

**-l** 选项的基本语法是：

> **-l**\[*label*\]\[**+D***pen*\]\[**+G***gap*\]\[**+H***header*\]\[**+L**\[*code*/\]*txt*\]\[**+N***cols*\]\[**+S***size*\[/*height*\]\]\[**+V**\[*pen*\]\]\[**+f***font*\]\[**+g***fill*\]\[**+j***just*\]\[**+o***off*\]\[**+p***pen*\]\[**+s***scale*\]\[**+w***width*\]

最简单的就是直接使用 **-l** 选项，不加任何东西，但是通常会为当前图例记录添加
一个 *label*。

还可以增加更多子选项，下面的每个子选项均对应图例文件中的一个记录：

- **+D***pen* ：在图例记录前绘制一条画笔属性为 *pen* 的水平线
- **+G***gap* ：增加垂直空白 [0]
- **+H***header* ：添加图例标题 [默认无标题]
- **+L***code*/*txt*: 添加一个字符串，*code* 可以取 **L**、**C**、**R**
  分别表示左对齐、居中对齐、右对齐 [默认为居中对齐]
- **+N***ncols* 设置接下来图例的列数 [默认为1列]
- **+S***size* 强制修改当前图例符号的符号大小或线段的长度 [默认与当前绘制的符号大小相同]
- **+V***pen* 绘制一条从前一水平线到当前水平线的垂直线

除此之外，还可以使用其它子选项:

- **+f***font* ：设置图例标题所使用的字体 [默认为 {term}`FONT_TITLE`]
- **+g***fill* ：设置图例框的填充色
- **+j***just* ：设置图例在底图中的位置 [默认为 TR，即右上角]
- **+o***off* ：设置图例相对于锚点的额外偏移量
- **+p***pen* ：图例边框的画笔属性
- **+s***scale* ：对图例中的所有符号和长度乘以一个比例因子以实现缩放
- **+w***width* 设置图例宽度 [默认为自动宽度]

需要注意：

- **+H**, **+g**, **+j**, **+o**, **+p**, **+w** 和 **+s** 仅当第一次使用 **-l** 选项时有效
- **+N** 用于设置图例列数。若在第一次使用 **-l** 选项加上 **+N** 子选项，会自动、
  调整图例的宽度，否则，**+N** 子选项只能将当前图例进一步拆分为多列而无法再
  调整图例宽度。

示例：

```{eval-rst}
.. gmtplot::
   :width: 75%

   gmt begin fruit
     gmt plot -R0/7.2/3/7.2 -Jx2c @Table_5_11.txt -Sc0.35c -Glightgreen -Wfaint -lApples+H"LEGEND"+D+jTR+f16p
     gmt plot @Table_5_11.txt -St0.35c -Gorange -B -BWStr -lOranges
   gmt end show
```
