如何在SAS的PROC GMAP中调整图例顺序,将“No Data”置于四分位数后
解决PROC GMAP图例排序问题:将“No Data”移至四分位数类别之后
方法1:直接通过LEGEND语句指定图例顺序(适用于字符型分类变量)
如果你的PredRateQuartile是字符型(存储的是"Below 9%"这类文本),直接在PROC GMAP中添加LEGEND语句,强制指定图例项的排列顺序:
proc gmap data=library.df map=library.vafips all; id fips; /* 指定使用自定义图例 */ choro PredRateQuartile / legend=legend1; /* 定义图例顺序,按需求排列类别,将"No Data"放在最后 */ legend1 order=('Below 9%' 'Between 9% to 11%' 'Between 11% to 14%' 'Over 14%' 'No Data') label=none; /* 可根据需求修改图例标题,label=none表示不显示标题 */ run; quit;
注意:order=中的字符串必须和数据集里PredRateQuartile的实际值完全一致(包括空格、大小写)。
方法2:结合自定义格式+LEGEND排序(适用于数字型分类变量)
如果PredRateQuartile是数字型(0代表No Data,1-4对应四分位数),先通过PROC FORMAT定义显示文本,再用LEGEND指定顺序:
/* 第一步:创建自定义格式,将数字编码映射为文本描述 */ proc format; value quartile_fmt 1 = 'Below 9%' 2 = 'Between 9% to 11%' 3 = 'Between 11% to 14%' 4 = 'Over 14%' 0 = 'No Data'; run; /* 第二步:绘图并指定图例顺序 */ proc gmap data=library.df map=library.vafips all; id fips; /* 应用自定义格式,并指定使用自定义图例 */ choro PredRateQuartile / format=quartile_fmt legend=legend1; /* 按数字编码顺序排列,将0(No Data)放在最后 */ legend1 order=(1 2 3 4 0) label=none; run; quit;
这两种方法都能强制图例按你需要的顺序排列,避免默认的字母/数值排序导致"No Data"出现在前面。
内容的提问来源于stack exchange,提问作者Alexandra
相关产品推荐
相关产品推荐

