图例这东西,说简单也简单,往地图上一放,谁都知道那是"告诉别人颜色和符号代表什么"的说明牌。但真到出图交付的时候,十个新手里有八个会在图例上翻车:要么图例把地图盖住一大块,要么分类名称全是字段里的原始英文,要么图层明明只有三类,图例却给你列出七八行。我在带新人的时候发现,大家画地图、配符号、调标注都学得挺快,唯独图例这一环,往往被当成"最后随手一点"的收尾动作,结果就是前面做得再漂亮,成品图还是显得不专业。
这篇内容就围绕QGIS里添加图例这个看似基础、实则细节极多的操作展开。我会把图例工具从调用入口、数据来源逻辑、条目管理、样式调整到导出前的检查,一条线讲透,重点放在那些帮助文档里不会写、但实际出图一定会遇到的问题上。不管你是刚接触QGIS、还在熟悉界面的入门者,还是已经能独立出图、但总觉得图例"差口气"的进阶用户,下面这些内容都能直接拿去用。图例不是装饰,它是地图语言的一部分,把它做对,地图的可读性会立刻上一个台阶。
1. 图例工具到底在解决什么问题
1.1 图例的本质:地图与读者之间的翻译层
很多人把图例理解成"图边上那个框",这个认知会直接导致后面所有操作都停留在表面。图例的真正身份是地图符号系统的翻译层——地图主体用颜色、线型、点状符号、填充图案来表达地理信息,而图例负责把这些视觉编码还原成文字含义。没有图例的地图,对制图者自己是清楚的,对任何第三方读者都是天书。
理解这一点,就能明白为什么图例的条目不能随便增删。图例里出现的每一个符号,必须在地图主体上有对应的表达;反过来,地图上用了的每一类符号,原则上都应该在图例里有交代。这是一一对应的契约关系。实际工作中常见的错误是:图层做了分类渲染,但图例只显示了一部分类别,或者图例里混进了地图上根本没出现的符号。这类问题在QGIS里不会报错,软件不会提醒你"图例和地图不一致",只能靠制图者自己把关。
从数据结构角度看,QGIS的图例是一个独立的版面元素,它通过读取图层的渲染器信息来生成条目,而不是简单地"截取"地图上的符号。这个机制决定了图例是"活"的——图层样式一改,图例跟着变;图层被移除,图例条目也会相应消失。理解这个联动关系,是后面所有高级操作的基础。
1.2 为什么图例必须在版面视图中添加
新手最容易卡住的地方,是在主界面找"添加图例"的按钮,找了半天找不到。原因很简单:图例属于打印版面元素,只能在版面视图(Layout)里添加,主地图画布上是不放图例的。这个设计逻辑和很多桌面制图软件一致——屏幕上的地图是工作视图,版面里的地图才是交付成品,图例、比例尺、指北针、标题这些"图廓要素"都归版面管。
所以标准流程是:主界面把数据、样式、标注全部调好,然后新建一个版面,在版面里插入地图框,再往地图框旁边放图例。这个顺序不能乱。我见过有人先在版面里放了图例,回头又去主界面改图层样式,结果图例条目对不上,还得手动刷新。正确的做法是把主界面的工作彻底做完再进版面,减少来回切换。
版面视图的入口在项目菜单里,新建版面后会得到一个空白画布,左侧是版面项目列表,右侧是布局设置面板。添加图例的按钮在左侧工具栏,图标是一个带横线的小方块,鼠标悬停会显示提示。点击后在版面上拖出一个矩形,图例就放进来了。第一次放进来的时候,图例默认读取当前地图框里所有可见图层的渲染信息,条目可能又多又乱,这是正常现象,后面再收拾。
1.3 图例条目的来源逻辑:它读的是渲染器,不是图层名
这一点值得单独拎出来说,因为它是很多"图例不对劲"问题的根源。图例条目的文字和符号,来自图层的渲染器配置,具体来说:
- 单符号渲染的图层,图例显示一个条目,文字默认取图层名称;
- 分类渲染的图层,图例按类别逐条显示,文字取类别字段的值;
- 分级渲染的图层,图例按分级区间显示,文字是区间范围;
- 规则渲染的图层,图例按规则逐条显示,文字取规则描述。
这意味着,如果你想让图例显示"耕地""林地""水域"这样的中文类别名,就得保证分类渲染时类别值本身就是中文,或者在渲染配置里把类别标签改成中文。如果数据字段里存的是"01""02""03"这样的编码,图例就会老老实实显示编码,读者看不懂。解决办法有两个:一是在分类渲染的符号配置里手动修改每个类别的标签;二是提前在属性表里加一个中文名称字段,用这个字段做分类。
提示:图例文字默认跟随渲染器,但也可以在图层属性的图例设置里单独覆盖显示名称。这个覆盖只影响图例,不影响地图上的符号,适合"地图上要简洁、图例里要详细"的场景。
2. 从零添加图例的完整操作链路
2.1 进版面之前的准备工作
在打开版面视图之前,有几件事必须先在主界面做完,否则进了版面还得退回来,来回折腾。第一件是确认图层顺序和可见性。图例默认只读取可见图层,被关掉的图层不会出现在图例里。如果你有底图、专题层、注记层好几层,要提前想清楚哪些层需要进图例——通常底图(比如影像底图)不需要在图例里逐条解释,可以在图例属性里把它排除掉。
第二件是把渲染样式定稿。分类的颜色、分级的断点、符号的大小,这些一旦进了版面再改,图例虽然会自动更新,但版面上图例的尺寸、位置可能需要重新调整。尤其是分类数量多的时候,图例高度会随条目数变化,改一次样式就要重新排版一次,很费时间。我的习惯是主界面里把样式调到"再也不想动"的程度,再进版面。
第三件是给图层起好名字。单符号渲染的图层,图例文字直接取图层名。如果图层名是"layer_20240115_final_v3"这种,图例里就会显示这串东西,非常难看。在图层树里双击图层名就能重命名,改成"行政区划""水系""道路"这类干净的中文名。这一步花不了两分钟,但能省掉后面逐个改图例条目的麻烦。
2.2 版面中插入图例的具体步骤
准备工作做完,进入版面视图。先插入地图框——点击左侧工具栏的"添加地图"按钮,在版面上拖出地图区域。地图框放好后,再点"添加图例"按钮,在地图框旁边(通常是右下角或左下角)拖出一个矩形区域。松开鼠标的瞬间,图例就会带着当前所有可见图层的条目出现。
这时候的图例大概率是"原生态"的:条目顺序按图层树从上到下,文字是图层名或字段值,字体是默认字体,背景可能是白色带边框。不要急着调样式,先做一件事——检查条目是否完整、是否有多余。对照地图主体,逐条核对:地图上出现的每一类符号,图例里有没有?图例里列的每一类,地图上有没有实际出现?这个核对动作看起来笨,但能拦住大部分交付前的低级错误。
核对完之后,如果条目数量太多(比如分类有二十类),要考虑是不是该合并类别,或者把不重要的类别从图例里隐藏。图例不是越全越好,条目太多反而干扰阅读。一般专题地图的图例控制在三到八条比较合适,超过十条就要考虑分组或者精简。
2.3 图例属性面板里最该先动的三个设置
图例放进来之后,选中它,右侧会切换到图例的属性面板。面板里选项很多,新手容易看花眼。按优先级,先动这三个:
第一,主标题。默认主标题是空的,建议填上,比如"图例"或者更具体的"土地利用类型"。主标题的字体、字号、对齐方式都可以单独设,通常比条目文字大一号、加粗,形成层次。
第二,条目字体和字号。默认字体往往偏大或偏小,和地图整体风格不搭。条目字号一般比地图上的标注略小,保证图例不抢地图的视觉重心。中文字体建议选黑体或宋体这类常规字体,避免用艺术字体,打印出来容易糊。
第三,背景和边框。图例背景默认是白色填充加黑色边框,放在深色地图上会很突兀。如果地图主体颜色较深,可以把背景设为半透明白色或者干脆无填充,边框调细或去掉。反过来,如果地图主体很花,图例就需要一个不透明的背景来保证文字可读。这个取舍没有标准答案,看地图整体效果定。
这三个设置调完,图例的基本观感就出来了。剩下的列数、间距、符号大小这些,属于精修,放在后面慢慢调。
3. 图例条目管理:增、删、改、排序的门道
3.1 自动更新与手动覆盖的边界
图例属性面板里有一个"自动更新"的开关,默认是开着的。开着的时候,图层样式一变,图例自动跟着变;关掉之后,图例就固定成当前的样子,不再随图层变化。这个开关的取舍很关键。
自动更新适合样式还在调整阶段,省得每次改完样式手动刷新。但到了出图定稿阶段,建议关掉自动更新,然后手动整理条目。原因在于,自动更新虽然省事,但它会把图层里所有类别一股脑塞进图例,包括那些你不想展示的类别。关掉自动更新后,你可以逐条删除不需要的条目、修改文字、调整顺序,图例完全受你控制。
关掉自动更新的代价是,如果之后又改了图层样式,图例不会同步,需要手动重新整理。所以正确的节奏是:样式定稿 → 关自动更新 → 手动整理图例 → 出图。中途如果非要改样式,改完记得检查图例是否还对得上。
3.2 删除多余条目与修改条目文字
删除条目的操作很直接:在图例属性面板的条目列表里选中某一行,点下方的减号按钮,条目就没了。常见需要删除的情况包括:底图图层被自动带进图例(底图通常不需要图例)、某个类别在地图范围内实际没有出现(空类别)、辅助图层(比如网格线、图廓线)被误带入。
修改条目文字稍微绕一点。选中条目后,面板下方有"文本"输入框,直接改就行。但要注意,这里改的只是图例显示的文字,不影响图层渲染器里的类别标签。也就是说,地图上的符号不变,只是图例里的说明文字变了。这个特性很适合做"地图简洁、图例详细"的处理——地图上符号旁不标注,图例里写清楚。
如果条目是从分类渲染来的,改文字的时候要小心别改错行。条目列表里每一行对应一个类别,改之前确认选中的是哪一行。分类多的时候,建议改完一条就在心里默念一遍类别名,避免张冠李戴。
3.3 条目排序:让图例符合阅读习惯
图例条目的默认顺序是图层树顺序或者类别字段的排序顺序,这个顺序未必符合读者的阅读习惯。比如土地利用图,读者习惯的顺序可能是耕地、林地、草地、水域、建设用地、未利用地,而数据里的类别顺序可能是按编码排的,完全对不上。
调整顺序的方法是在条目列表里选中条目,用面板上的上移、下移按钮调整位置。条目多的时候一个个移很烦,有个技巧:先把条目按目标顺序在脑子里排好,然后从最下面一个开始往上移,这样每次移动都不会影响已经排好的部分。
排序的原则因图而异。分类图一般按重要性排,重要的类别放前面;分级图按数值大小排,从小到大或从大到小;多图层混合的图例,按图层逻辑分组,比如"自然要素"一组、"人文要素"一组,组间用间距或分隔线隔开。QGIS的图例支持分组,在条目列表里可以创建组,把相关条目拖进组里,组可以加组标题。这个功能在图层多的时候特别有用。
3.4 用表达式动态生成图例文字
这是一个进阶技巧,适合需要批量处理或者文字有规律变化的场景。图例条目的文字除了手动输入,还支持用表达式生成。在条目属性里找到文字设置,切换到表达式模式,可以写类似'类别:' || "name"这样的表达式,把字段值和固定前缀拼起来。
表达式的价值在于批量化和一致性。比如所有条目都要加"类型:"前缀,手动改十条容易漏,用表达式一次搞定。再比如条目文字要包含面积统计,可以用表达式把类别名和面积字段拼在一起,图例直接显示"耕地(1200公顷)"这样的信息。表达式里能用的函数和主界面的字段计算器基本一致,会写字段计算的话上手很快。
不过表达式图例有个坑:它依赖字段值,如果字段里有空值或者异常值,图例文字会跟着出问题。用之前先在属性表里检查一遍字段质量,把空值和异常值处理掉。
4. 图例样式精修:让图例融入地图而不是贴上去
4.1 列数与条目布局的控制
图例条目一多,单列排下来会很高,可能超出地图框的高度。这时候就要用多列布局。图例属性面板里有列数设置,默认是1,改成2或3,条目会自动分列。分列之后要注意列间距,间距太小条目会挤在一起,太大又浪费版面。
列数的选择要看图例的放置位置。放在地图右下角、高度受限的,用两列或三列;放在地图右侧、高度充裕的,单列更清晰。分列之后,条目的阅读顺序是从上到下、从左到右,还是从左到右、从上到下,取决于版面设置,调的时候实际看一眼效果,别想当然。
还有一个细节是条目之间的间距。默认间距往往偏紧,条目文字挤在一起,读起来费劲。适当加大行间距,图例会显得透气。但间距也不能太大,否则图例整体高度失控。我的经验是行间距设为字号的0.3到0.5倍比较舒服。
4.2 符号与文字的相对大小
图例里的符号大小是可以单独调的,这个设置容易被忽略。默认情况下,图例符号的大小跟随地图上的符号大小,但地图符号为了在地图上醒目,往往做得比较大,放到图例里就显得笨重。图例符号应该比地图符号略小,和条目文字形成协调的比例。
调整方法是在图例属性里找到符号大小设置,通常有"符号大小"或"图例符号大小"的选项,可以设为固定值或者相对地图符号的百分比。点状符号调小一点问题不大,面状符号的填充图案调小后可能看不清纹理,需要实际预览确认。线状符号的线宽调小后可能细到看不见,也要注意。
文字和符号的垂直对齐也是个细节。默认情况下符号和文字是居中对齐的,但符号大小不一时,视觉上会显得参差。可以在条目设置里调整对齐方式,让符号顶部对齐或者基线对齐,整体看起来更整齐。
4.3 背景、边框与整体风格的统一
图例的视觉风格要和地图整体统一,这是专业感的来源。几个判断标准:
- 地图是浅色系,图例背景用白色或浅灰,边框用细灰线;
- 地图是深色系,图例背景用半透明深色或者干脆无背景,文字用浅色;
- 地图有明确的主题色,图例的标题和边框可以呼应主题色,但不要喧宾夺主;
- 打印出图的话,背景透明度要慎用,某些打印机会把半透明渲染成实色或者出现色带。
边框的处理有个常见误区:给图例加很粗的黑色边框,觉得这样"框起来清楚"。实际上粗边框会让图例显得笨重,和地图主体割裂。细边框或者无边框加轻微阴影,反而更现代。QGIS的图例支持阴影效果,适度加一点,图例会有浮在地图上的层次感,但阴影别太重,否则像贴了张便利贴。
4.4 图例标题的排版讲究
图例标题虽然只是一行字,但排版上有讲究。标题的位置默认在图例顶部居中,可以改成左对齐,和条目文字的左边缘对齐,视觉上更整齐。标题和第一条条目之间要有适当的间距,太挤显得局促,太松又断了联系。
标题文字要简洁,一般就是"图例"两个字,或者"图例说明"。有些制图者喜欢在标题里写一长串,比如"土地利用现状分类图例说明",这就冗余了——地图本身有标题,图例标题再重复一遍分类名,信息重复。图例标题的作用是标识这个区域是图例,不是重复地图主题。
如果图例分了组,组标题的排版也要注意。组标题通常加粗、字号略大于条目文字,和条目之间用缩进或分隔线区分层次。组标题不要和主标题用同样的样式,否则层次混乱。
5. 出图前图例的检查清单与常见翻车点
5.1 五个必查项
图例调完,出图之前,按这个清单过一遍,能拦住绝大多数问题:
| 检查项 | 检查方法 | 常见问题 |
|---|---|---|
| 条目完整性 | 对照地图主体逐类核对 | 地图上有某类符号,图例里没有 |
| 条目准确性 | 核对图例文字与符号的对应关系 | 文字和符号错位,张冠李戴 |
| 文字可读性 | 缩小到实际出图尺寸看 | 字号太小,打印后看不清 |
| 位置合理性 | 看是否遮挡地图关键信息 | 图例压住了重要地物或标注 |
| 风格一致性 | 和图整体对比 | 字体、颜色、边框风格突兀 |
这五项里,文字可读性最容易被忽略。在屏幕上看着刚好的字号,打印到A4纸上可能小得看不清。检查方法很简单:把版面缩放到实际打印尺寸的视图比例,看图例文字是否还能轻松辨认。如果费劲,就加大字号。一般打印出图的图例条目字号不小于8磅,屏幕展示的可以小一些。
位置合理性也常出问题。图例默认放在拖拽的位置,但那个位置可能正好压着地图上的重要信息。放图例之前,先看地图主体的"空白区"在哪里——通常是角落或者大面积单一地物的区域。图例放在空白区,既不遮挡信息,又利用了版面空间。如果地图主体很满,找不到空白区,可以考虑把图例放到地图框外面,版面边缘留白处。
5.2 图例与地图不同步的排查
最常见的问题:改了图层样式,图例没变。排查顺序如下:
- 检查图例的"自动更新"是否开着。关着的话,图例不会随样式变,需要手动刷新或者重新整理。
- 检查图层是否还在版面地图框的图层列表里。有时候图层被移除或者被设为不可见,图例条目会消失或残留。
- 检查图例读取的是哪个地图框。一个版面里如果有多个地图框,图例要绑定到正确的那个,绑定错了读的是另一个地图框的图层。
- 如果以上都正常,尝试删除图例重新添加。极少数情况下图例缓存会出问题,重建最省事。
这个排查链路我实际用过很多次,大部分"图例不动"的问题出在第一条——自动更新被关了但忘了。养成习惯:每次改完样式,瞄一眼图例有没有跟着变,没变就按这个顺序查。
5.3 分类太多导致图例爆炸的处理
分类渲染的类别超过十五个,图例就会变成一长条,既占版面又难读。处理思路有三条:
合并类别。把相近的类别合并,比如把各种建设用地合并成一类"建设用地",图例条目立刻减少。合并要在渲染器里做,不是在图例里删条目——图例里删条目只是不显示,地图上还是那么多颜色,读者会对不上。
分组显示。类别确实不能合并的,用图例的分组功能,把类别按大类分组,组内条目用小字号,组标题用大字号。这样图例有层次,读者可以按组查找,不至于被一长串条目吓到。
分级替代分类。如果类别本质上是连续的数值区间,考虑改用分级渲染,分级一般五到七级,图例条目自然就少了。这个改动比较大,要在主界面重新配渲染,但效果往往比硬塞十几条分类好。
5.4 导出时图例的字体与分辨率陷阱
版面里看着完美的图例,导出成图片或PDF后字体变了、变模糊了,这是导出设置的坑。两个关键设置:
字体嵌入。导出PDF时,如果字体没有嵌入,在别的机器上打开可能被替换成默认字体,图例排版全乱。导出设置里勾选字体嵌入,或者把文字转成轮廓(转轮廓后不能再编辑文字,但显示绝对稳定)。
导出分辨率。导出图片时分辨率不够,图例文字会糊。屏幕预览用的分辨率(比如96dpi)导出打印图肯定不够,打印出图至少300dpi。导出前在设置里确认分辨率,别用默认值。
还有一个细节:图例里的符号如果是复杂图案(比如带纹理的填充),低分辨率导出时纹理可能糊成一团。这种情况要么提高分辨率,要么简化符号,用纯色替代纹理。
6. 几个让图例更专业的实战心得
6.1 图例不是越全越好,学会做减法
刚学制图的人有个倾向:恨不得把所有信息都塞进图例,觉得这样才"完整"。实际恰恰相反,图例的价值在于帮助读者快速理解地图,信息过载反而降低可读性。底图不需要图例,辅助线不需要图例,地图范围内没出现的类别不需要图例。图例里只保留读者真正需要对照的符号,其余的果断删掉。
我做专题图的时候,图例条目一般控制在五条以内。超过五条就回头审视:是不是分类太细了?能不能合并?有没有哪类其实不重要、可以从地图上弱化甚至去掉?这个"做减法"的过程,往往比调样式更能提升地图质量。
6.2 图例位置跟着地图的视觉重心走
图例放哪里,没有固定规则,但有个原则:放在地图视觉重心的对角。地图主体信息集中在左上,图例就放右下;信息集中在中间,图例放角落。这样图例和地图主体形成对角平衡,版面不会一边重一边轻。
另外,图例不要贴着地图框边缘放,留一点内边距,图例和地图框之间有空隙,视觉上更舒服。空隙大小大概是图例宽度的十分之一左右,具体看版面整体比例调。
6.3 保存图例样式模板,下次直接复用
如果经常做同一类地图,图例的样式(字体、字号、背景、边框、列数)每次都调一遍很浪费时间。QGIS的版面可以保存为模板,下次新建版面时直接套用,图例样式跟着模板走。保存模板的入口在版面菜单里,保存后模板文件可以拷贝到其他机器用。
模板的局限是它保存的是版面结构和样式,不保存具体数据。套用模板后,图例条目还是按新数据生成,需要重新整理条目内容。但样式部分省了,也算省了一半功夫。对于固定格式的定期出图任务,模板能显著提效。
6.4 图例文字里的单位与精度
数值型图例(分级渲染的区间、统计数值)要注意单位和精度。区间写"0-100"还是"0-100.00",取决于数据精度和读者需求。精度过高显得啰嗦,过低又损失信息。一般保留和数据采集精度一致的有效数字就行,没必要为了"精确"堆小数位。
单位要统一,别一个条目用"公顷"、另一个用"平方米"。单位写在图例标题里或者每个条目后面都行,但全文要一致。如果数值跨度大,考虑用科学计数或者换算单位,避免图例里出现一长串零。
6.5 多地图框版面里的图例绑定
一个版面里放多个地图框(比如主图和插图)时,每个地图框可能需要各自的图例。添加图例时,图例属性里要指定它绑定哪个地图框,绑定错了图例读的是另一个地图框的图层,条目全不对。这个设置在"地图"选项里,下拉选择目标地图框。
多图例的版面,图例样式要统一,字体、字号、背景保持一致,只是条目内容不同。样式统一靠手动调容易漏,可以先调好一个图例,复制粘贴到其他位置,再改绑定和条目,效率高且不易出错。
图例这个工具,操作上确实不复杂,但要做好,靠的是对"地图要传达什么"的理解。每次放图例之前问自己一句:读者看这张图,需要对照图例确认哪些信息?答案就是图例该有的内容,其余的都可以砍掉。把这个判断做对了,剩下的样式调整都是锦上添花。我在实际出图中反复验证过,图例条目精简、位置合理、风格统一的地图,哪怕地图主体做得朴素,整体观感也明显更专业。反过来,图例臃肿、错位、风格割裂的地图,主体再花哨也显得业余。这个道理,做多了自然有体会。