You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Stata spmap图例键与文本不对齐、标签从2开始问题求助

spmap绘图异常解决方案

问题1:图例键符号与对应文本错位

产生原因:你在legend参数中设置的alignment(top)会强制图例文本顶部对齐,同时size(*1.6)放大了文本尺寸、symysize(*0.9)缩小了符号尺寸,三者共同作用导致符号和文本不在同一水平线。
修复方案:

  • 删除alignment(top)参数,使用spmap默认的垂直居中对齐规则
  • 调整符号和文本的尺寸比例,比如将文本size改为*1.2,symysize改为*1.1,保持二者视觉高度一致
  • 如需精细化微调对齐效果,可新增symyoffset(*0.2)参数,正数向上移动符号、负数向下移动符号,直至对齐

问题2:自定义图例标签必须从序号2开始

产生原因:这是spmap的内置规则,图例序号1固定预留给缺失值/超出分级区间的观测值类别,只要你没有主动开启missing参数显示缺失值分类,序号1的条目默认隐藏。你设置的clbreaks(0 (5000) 30000)一共生成6个有效值分级,正好对应序号2到7,所以自定义标签需要从2开始设置。
如果需要从序号1开始设置标签,可通过两种方式实现:

  • 新增missing参数显示缺失值类别,此时序号1会显示缺失值对应条目,你可直接自定义该条目标签
  • 新增legend(off)关闭spmap默认图例,使用Stata原生graph legend命令自定义绘制全部图例内容

调整后参考代码

spmap predictions using "$shape/district polygons.dta", ///
id(id)  ///
title("TEST predictions") ///
label(data("district predictions.dta")  ///
    xcoord(x_coord) ycoord(y_coord) label(DISTRICT) /// 
    pos(0) size(*0.9))  ///
clmethod(custom)    ///
clbreaks(0 (5000) 30000)    ///
fcolor($colorscale_stata)   ///
legorder(lohi)  ///
legend(pos(11) col(1) rowgap(0.3) size(*1.2) margin(l = 0.6 b = -0.2)   ///
    symysize(*1.1)  ///
    label(2 "0 to 5000")    ///
    label(3 "5000 to 10000")    ///
    label(4 "10000 to 15000")   ///
    label(5 "15000 to 20000")   ///
    label(6 "20000 to 25000")   ///
    label(7 "25000+")   ///
    title("PREDICTIONS", pos(11) size(4)))

内容的提问来源于stack exchange,提问作者Arkadeep Bandyopadhyay

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 22:24:04