
做地图排版本是一件需要耐心的事但很多人不是被复杂的GIS分析难住而是倒在了最基础的外观设置上标注文字挤成一团、点符号大小不协调、颜色搭配出来辣眼睛。QGIS里的“字体/大小/颜色设置”看似只是一个普通属性对话框实际却决定了你的图能不能被人一眼看懂。这篇是“QGIS快速入门与应用基础”系列的第207讲我把这些年调样式踩过的坑和常用经验一次讲透。内容适合刚接触QGIS、想提升出图质量的人也适合做标注或符号时总是“调不好看”的老用户。先说明一点如果你还没装QGIS我建议去官网下载3.28或3.34的LTR版本安装包自带完整中文字体支持。装完新版本之后再去摸索下面这些设置项会更顺手。1. 先搞明白QGIS里的“字体/大小/颜色”到底控制哪些东西1.1 三类高频场景标注、符号、布局很多新手拿到QGIS第一反应是“这不是GIS软件吗怎么还要手动设置字体颜色”问出这个问题的多半是刚开始接触地图制作。QGIS里的字体、大小、颜色并不是只在一个对话框里调一调就完事它会出现在三个完全不同的地方。第一是要素标注。比如你要在村庄点上标出村名在路线上标出路名这些文字的大小、字体、颜色、描边效果都在图层属性的“标注”选项卡里设置。第二是符号渲染。点图层的圆点有多大、线图层的线有多粗、面图层的填充色是红是蓝这些在“符号化”选项卡里管。第三是布局排版。最后要打印地图、导出图片时图名、比例尺数值、图例标题里的文字颜色和大小在“布局”窗口里单独设置跟画布上的标注又不完全一样。这三类场景虽然操作方法不一样但背后使用的都是同一套Qt渲染引擎。也就是说你在标注里选的字体和布局里用的字体用的是同一个系统字体库。这也解释了为什么系统没装某种字体时整个QGIS里面那种字体的显示都会出问题不只是标注图例、比例尺、表格里的字体也会一起受影响。1.2 为什么这门“基础课”这么重要我见过太多人做GIS分析很厉害但最后出的图惨不忍睹字压字、颜色刺眼、线上一个点是2毫米还是2米完全没概念。说白了就是没把字体、大小、颜色这三样基础参数吃透。QGIS默认样式偏朴素你如果不专门调很容易出一张“技术含量很高、颜值很低”的图。而且这三项参数从来都不是孤立的。字体大小要跟符号大小协调标注颜色要跟底图背景形成对比布局里的图例文字要跟画布标注保持一致的视觉层级。所以这一篇虽然叫“字体/大小/颜色设置”实际上是在帮你建立一整套地图样式设计的基本功。后面讲的每个操作都能直接套用到自己的项目里。2. 字体设置的实操与避坑2.1 标注字体的正确打开方式右键图层进入图层属性切到“标注”选项卡点击文本框右侧的“字体”按钮就能打开字体设置面板。里面能调字体、字形、大小、颜色、字间距、混合模式等。我常用的操作流程是先选择中文字体比如思源黑体、微软雅黑或Noto Sans CJK然后设置初始大小为9或10磅再通过下方的“数据定义覆盖”做动态大小调整。这里必须提醒一件事QGIS里字体下拉列表的预览有时不显示中文显示成方框这只是预览控件的问题不代表选不了。你选完、点击确定后画布上能正常显示中文就完全没有问题。我早期就被这个坑过一度以为QGIS对中文字体支持不好后来才发现只是预览字体控件不争气。另外“标注”选项卡里的“文字渲染”部分可以给文字加缓冲描边、阴影、背景框。缓冲颜色和大小很重要比如在影像底图上标注村庄名白字加1毫米黑色缓冲多远都能看清。很多用户只调字体大小忽略了缓冲结果文字在复杂背景上根本读不出来。2.2 换电脑字体失效怎么办字体是跟着操作系统走的QGIS工程文件.qgz里只记录字体名称并不嵌入字体文件。如果你在家里电脑用了“方正小标宋”到单位电脑上没这个字体QGIS会自动回退到默认字体整个地图排版会变得很难看。稳妥做法是尽量使用各平台通用的免费字体比如思源黑体、思源宋体或者Windows系统自带的微软雅黑、宋体。如果是团队协作最好把字体文件附到共享文件夹里并注明“请先安装XX字体”。我还习惯在完成一张图后把样式保存为.qml文件右键图层选择导出样式另存为QGIS样式文件。下次换机器时加载样式就能快速恢复原来的字体和颜色设置。如果你要跨平台用QGIS比如在Windows上做完图到Linux服务器上跑批量出图更要留意字体差异。Linux系统常常没有微软雅黑需要你自己安装Noto Sans CJK之类的开源字体。我建议在Linux服务器上统一使用思源黑体或Noto Sans CJK这样一套字体在三个平台都能稳定显示。2.3 用表达式让字体“活”起来QGIS真正的强大之处在于所有样式属性都能用表达式驱动。在字体设置面板中单击旁边的“数据定义覆盖”按钮就是那个写有ε的图标选择“编辑…”就可以写表达式。举个例子我想让面积大的图斑标注字体大一些、面积小的图斑字体小一些可以这样写scale_linear(AREA, 1000, 50000, 7, 14)意思是当AREA字段从1000到50000之间时字体大小从7磅线性变化到14磅小于1000取7磅大于50000取14磅。这是scale_linear函数的特性专门用来做连续数值到样式的映射。还可以用case when根据属性值给标注不同颜色CASE WHEN level 重要 THEN #FF0000 ELSE #000000 END这种表达式方式的优势在于数据更新时样式会自动跟着属性变化不需要手动一个个改。我在地籍图斑标注、土地利用分类标注中经常这么用省下大量重复操作。如果你连分式标注都要做也可以用类似方法分别控制分子和分母的字体大小这在地址注记、地类编号标注里非常实用。3. 大小设置的核心逻辑3.1 毫米、像素、地图单位三个“单位”别搞混打开符号选择器最上方会看到“大小”输入框右侧有个单位下拉列表“毫米”“地图单位”“像素”。标注的字体大小则是用点磅或毫米表示的。很多人就在这里乱了套。用“毫米”去衡量符号大小意味着无论地图怎么缩放屏幕上画出来的符号尺寸始终不变。这在打印出图时非常方便一张A4纸上圆点想要2毫米直径填2毫米打印出来就是2毫米。但如果你的地图用于屏幕上交互查看或者以后要发布到Web地图这个固定毫米尺寸就不太合理——比例尺变化时符号应该跟着地物大小变化才对。这时候应该选“地图单位”比如用米或度。举个例子比例尺1:10000实际一条路宽10米你希望路在图上能反映真实宽度就可以把线宽设置为10单位选米。程序会按当前比例尺自动换算成屏幕像素。像素单位通常用于输出栅格图。用“地图单位”时一个点的大小会随比例尺缩放固定“毫米”则不会。3.2 点、线、面以及标注大小怎么协同同一幅地图里点符号、线宽和字体大小要形成一个视觉等级。我的经验是普通层级的点直径可以先按毫米设置成1.5线宽0.4标注文字8磅上一级要素如省会点直径2.5线宽0.8文字10磅。然后通过符号的“图层”叠加多层来丰富视觉效果比如点符号可以叠加一个半透明的外圈让重点更突出。线宽还牵扯到“偏移”和“端点样式”这些虽然不属于“大小”本身但会影响视觉轻重。面图层除了填充色还可以设置边框大小。面边界如果太粗会抢了线的视觉优先级我通常把边界设为0.26毫米。标注大小除了固定值还可以让QGIS自动避让在“放置”设置里启用“避让”程序会自动把冲突的标注挪开。标注大小与标注密度直接相关。字太大标注冲突多字太小又看不清。建议先在1:1的窗口中用正常比例观察反复微调。如果你需要按比例尺控制标注显示可以在“渲染”部分勾选“基于当前比例尺可见”设置最小和最大比例尺这样就不会在放大缩小过程中出现标注挤成一团的现象。3.3 布局中大小与导出分辨率的关系很多人在布局里插入标题文本框把字号调到36导出图片后文字却小得可怜。其实布局文本框的字号单位也是点像素大小和导出图片的分辨率DPI有关同一字号导出DPI越高最终图片里文字占的像素越多但物理尺寸不变。在布局中导出图片时分辨率可以选96、150、300DPI。如果你希望屏幕上看到的大字体导出的图片里也保持类似视觉占比就要把导出图片按相同视觉尺寸查看。实际操作上布局里我用标题字号20到24点说明文字10到12点导出300DPI图片用于打印若只做PPT汇报导出150DPI就够。关键是固定DPI之后字号和最终图片像素成正比想要大就加大字号或加大布局画布尺寸两者效果不同。还有个小技巧布局中比例尺和图例的字体大小是独立于画布的你在图层属性里把标注调好了布局图例却可能还是默认字体。要统一风格必须在布局窗口里选中图例再调整“文本格式”里面的字号和颜色。这一点非常容易漏。4. 颜色设置从入门到进阶4.1 颜色选择器和透明度双击符号颜色块就会弹出颜色对话框。里面有三套常用的取色模式色轮、HSV滑块、十六进制输入。经常在Web地图上看到“#3498db”这种颜色直接复制到十六进制输入框里按回车即可。右上角还能设置“不透明度”这相当于透明度常用于面填充色让底图或卫星影像能透出来。项目里常用的固定颜色可以点击“添加到自定义颜色”之后在符号面板底部的“自定义颜色”中直接调用。我还习惯把一套行业配色保存为.qml样式右键图层导出样式另存为QGIS样式。下次加载样式就能一步到位。颜色对话框里还有一个“拾取屏幕颜色”的按钮可以从地图画布上任意位置取色。这个工具在对照底图配色时特别好用。比如你想让标注颜色跟某条河流的颜色呼应直接拾取河流的颜色就能保证视觉统一。4.2 分类配色、渐变和表达式如果要按属性显示不同颜色最常用的是“分类”和“分级”两种渲染。分类适合离散字段比如土地利用类型分级适合连续数值比如人口密度。分级渲染可以选择色带比如“RdBu”红蓝、“YlGn”黄绿还可以把色带反向。“分类”渲染中每个分类的颜色默认随机生成经常随机出很刺眼的颜色。我通常的做法是先用ColorBrewer网站选好一组色卡然后把颜色代码一个个粘贴进去。或者如果你只需要两三个分类直接在表格里手动双击颜色块选择即可。更高级的做法是用表达式控制颜色。例如在符号层的“填充颜色”右侧点击数据定义覆盖输入CASE WHEN population 10000 THEN #C0392B WHEN population 5000 THEN #E67E22 ELSE #F1C40F END这样图例可以保持“分类”模式但颜色完全按你的规则来。注意使用表达式指定颜色后如果图例还显示旧颜色需要右键图层选择“重新生成图例”或者手动刷新一下渲染设置。4.3 颜色搭配的几条土办法我见过大量配色失败的地图总结几条土办法供参考第一同一张图颜色总数控制在5到8种以内不要用高饱和度“彩虹色”去铺满全图第二底图用低饱和度的浅色前景要素用深色或亮色保证对比第三热力、密度图用单色渐变加透明度避免花哨第四把常用配色保存为方案在“设置 → 配色方案”里管理。QGIS内置了“颜色方案”功能可以把你选好的颜色保存成组下次直接按组加载非常适合项目组统一风格。我的习惯是先把一张参考底图比如在线地图的默认风格加载到QGIS里然后反复用“拾取屏幕颜色”工具从底图上取色让标注和符号颜色与底图和谐一致。这样出来的图不会太突兀。5. 配合在线底图与KML路线时的实战技巧5.1 加载天地图后标注颜色和缓冲怎么调热词里很多人搜“qgis加载天地图”。加载在线底图对样式设置影响很大。QGIS中加载天地图的基本方法是浏览器面板 → XYZ Tiles → 右键新建连接填入天地图的瓦片地址。天地图官方要求申请Key你只需要去天地图官网注册个人开发者获取一个HTTP Key填到URL里即可。由于天地图的瓦片在国内访问相对稳定这也是很多国内用户首选底图的原因。有了底图接下来就是样式问题。天地图有两种常用风格影像底图和电子地图底图。影像底图是深色或彩色遥感影像如果你在上面标注道路名、地名要特别注意字体颜色和描边。我的建议是字体用纯白色勾选“缓冲”缓冲色用黑色大小1到1.5毫米这样任何背景下文字都能跳出来。电子地图底图颜色偏浅标注可以用深灰色或黑色不加缓冲或加淡白色缓冲。符号颜色也要和底图形成对比。在影像上纯红色、纯黄色都比较显眼在浅色电子地图上深蓝色、深红色更合适。如果你不确定某个颜色在底图上是否清晰可以截图放大直接目测或在画布上对比几个候选色。5.2 KML路线统计里程时的标注设置另一个高频需求是“qgis统计kml路线公里数”。KML文件导入QGIS后通常得到一个线图层。你可以用字段计算器添加一个“长度”字段表达式为$length但需要注意单位如果图层坐标系是经纬度$length返回的是度并不是我们熟悉的米。更简单的做法是先把图层导入或导出为平面坐标系比如EPSG:3857或当地投影再在字段计算器里使用$length单位就是米。里程标注非常依赖颜色和大小设置。我通常在路径终点加一个圆形符号里面标注“xx km”。做法是先在线图层属性中开启标注字段选择“里程”字段字体大小用9磅或10磅字体颜色用跟背景反差大的深蓝色再加一个白色缓冲防止里程数字和路径压在一起看不清。如果一段线很长想把字放在中间可以开启“沿线标注”并设置允许自动放置。这里还牵扯到符号尺寸路径本身可以用“地图单位”设置宽度比如2米这样缩放时路径粗细会跟着比例尺变化里程标签则用固定磅值保证整体协调。综合运用字体、大小、颜色KML路线的成品图才会直观。5.3 关于安装和卸载的一点经验热搜里还有“qgis卸载后无法安装”“qgis不能安装”的问题虽然不属于本讲核心也顺带提一句。这类问题多半是残留配置、权限不足或杀毒软件拦截导致的。我的建议是全新安装时去官网下载独立安装包或者使用OSGeo4W网络安装遇到无法安装先卸载干净删除用户目录下的QGIS配置文件如AppData/Roaming/QGIS再以管理员身份运行安装程序。安装完成之后还要确认中文字体可用。如果你使用的是精简版系统缺少常用中文字体标注里就会出现一个个方框。这时去微软或思源官方下载字体安装即可。这也正是我们为什么要单独重视字体设置因为很多“字显示不出来”的问题根本不是QGIS的锅而是系统字体缺失。6. 常见问题排查字体不显示、大小不对、颜色失效6.1 典型问题速查表现象常见原因解决办法标注文字变成方框或豆腐块系统缺字体或QGIS字体缓存异常更换系统已安装的中文字体重装字体后重启QGIS调整字号没变化标注启用了“数据定义覆盖”字体大小在字体设置中点击数据定义覆盖按钮选择“清除”或修改表达式颜色改了但屏幕上没变化符号层有多个子图层改的是被遮挡层或透明度问题删除多余子层检查不透明度和混合模式点符号大小固定2mm打印出来却很大布局导出分辨率或比例尺设置问题检查布局范围将符号单位改为适合打印的毫米或地图单位线宽在地图缩放时不变线宽单位是毫米需要改为“地图单位”在符号选择器中将单位改为地图单位并设置合理数值同一符号不同要素颜色不同但图例全一个色使用了表达式或随机颜色图例未更新重新生成图例或用“分类”渲染让图例与规则保持一致6.2 我排查样式问题时的习惯流程如果你调的样式一直不如预期不要急。我一般按这个顺序排查右键图层进入图层属性切到“符号化”先看当前渲染方式是不是“单符号”。如果之前做过分类或渐变却想在单符号下改颜色当然无效。然后点“高级”旁边的数据定义覆盖小按钮看是否有表达式覆盖了颜色、大小、旋转等。很多“改不动”都是因为这里被表达式锁定了。第二步检查图层的比例尺可见范围。如果图层设置了“仅在1:10000时可见”你放大到1:5000后整个图层都消失了自然看不到样式效果。第三步检查是否开启了“绘制效果”中的图层混合模式。比如面图层用了“正片叠底”填充色看起来会比原色深很多这不是你要的颜色改成“正常”就能解决。还有一个小窍门想要快速尝试不同的字体和颜色可以使用QGIS的“样式复制”功能。右键设置好样式的图层选择复制样式再右键目标图层选择粘贴样式。这个操作会连分类阈值、透明度、字体设置一起复制过去适合多个同结构图层统一美化。最后再分享一个我自己的习惯凡是涉及字体大小的表达式我都会先在小范围数据上试跑一次对比不同取值区间的显示效果再应用到全图。这个习惯帮我规避了不少标注压盖和字重失衡的尴尬。字体、大小、颜色这三样东西你在QGIS里多调几次就会慢慢找到手感出图质量也会稳定很多。