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
相关产品推荐
相关产品推荐

