我无法使用Gmap程序(SAS 9.4)注释我创建的地图。
我有一个我为两个区域(XX和YY)创建的自定义形状数据集。 XX实际上是一个由两种形状组成的不相交区域。
我有两个问题:
以下是我放在一起的代码。
data map;
input Area $ Y X POINTORDER SUB_POLYGON_NUMBER POLYGON_NUMBER;
cards;
XX 1 1 1 1 1
XX 2 1 2 1 1
XX 3 1 3 1 1
XX 3 2 4 1 1
XX 3 3 5 1 1
XX 2 3 6 1 1
XX 1 3 7 1 1
XX 1 2 8 1 1
XX -1 0 1 2 1
XX -2 0 2 2 1
XX -1 -2 3 2 1
YY 7 7 1 1 2
YY 7 8 2 1 2
YY 8 9 3 1 2
;
run;
data sales;
input Area $ Sales;
datalines;
XX 500
YY 200
;
run;
%annomac;
%CENTROID(map,anno,Area,segonly=1);
data anno;
set anno;
text=Area;
function='label';
style="'Albany AMT/bold'";
run;
proc gmap data = sales map=map;
id Area;
choro Sales / nolegend annotate=anno;
run;
quit;
答案 0 :(得分:2)
正如乔所说,如果有两个问题,这将是一件好事。我回答了第一部分,因为Joe回答了第二部分。
通过打开MAPS.Sweden
,我发现区域标识符POLYGON_NUMBER
和SUB_POLYGON_NUMBER
被称为ID
和SEGMENT
。因此,如果您根据map
定义中的列名更改列名,您将获得所需的结果。
data map;
input Area $ Y X POINTORDER SEGMENT ID;
cards;
XX 1 1 1 1 1
XX 2 1 2 1 1
XX 3 1 3 1 1
XX 3 2 4 1 1
XX 3 3 5 1 1
XX 2 3 6 1 1
XX 1 3 7 1 1
XX 1 2 8 1 1
XX -1 0 1 2 1
XX -2 0 2 2 1
XX -1 -2 3 2 1
YY 7 7 1 1 2
YY 7 8 2 1 2
YY 8 9 3 1 2
;
run;
之前我没有使用过gmap,所以非常有趣。我试着阅读文档以了解如何命名列以使其工作。我没有找到任何东西,但它应该在那里。如果您知道我可以阅读的内容,请发表评论。
答案 1 :(得分:1)
我不确定你问题的第一部分,但你可能应该将它们分成两个问题 - 这是两个不同的问题。
就问题标题中的问题而言,注释文本的位置,你有两个问题。
一:您的注释文本没有使用相同的坐标系。在SAS / GRAPH中,这由XSYS
,YSYS
等变量控制。默认为4,这是整个图像的值;这不是你想要的。你想要的是2,它只在数据空间中(即实际上在绘制的轴上)。
您还需要使其可见:默认情况下,它不会在图元素上“绘制”。
data anno;
set anno;
text=Area;
function='label';
style="'Albany AMT/bold'";
color='Red';
when='After';
xsys='2';
ysys='2';
run;
我将它设为红色以使其更加明显,但您当然可以使用黑色。
请注意,我使用单个多边形测试了这个(我删除了subpolygon = 2);我不确定如果两者都有,会发生什么,但中心可能有点奇怪。