# Annotate Facility之森林图

`ORD2=36-_N_-(ORD1-1);`

1. 画首尾部的字符串和X轴，因为首尾部要用到的是Graphics Output区域故要用 %system(3, 3)，而X轴用的是Data区域故要用 %system(2, 2)，代码如下：
```/*字体*/
%let ftext ='Albany AMT/roman/medium';

/*编译宏*/
%annomac;

data anno1;
length TEXT \$200.;
%system(3, 3);
%label(52, 97, 'Treatment Difference', black, 0, 0, 1.2, &ftext., 5)
%label(1, 92, 'Subgroup', black, 0, 0, 1.1, &ftext.,6);
%label(63, 92, 'Difference(95%CI)', black, 0, 0, 1.1, &ftext.,6);
%label(81, 95, 'Response Rates(%)', black, 0, 0, 1.2, &ftext., 6) ;

%label(82, 92, 'TRTA', black, 0, 0, 1.1, &ftext., 6);
%label(92, 92, 'TRTB', black, 0, 0, 1.1, &ftext., 6);

%label(32, 6, 'Favors TRTA', black, 0, 0, 1.1, &ftext., 4);
%label(56, 6, 'Favors TRTB', black, 0, 0, 1.1, &ftext., 6);

%label(25.5, 4, '-70', black, 0, 0, 1.0, &ftext., 6);
%label(60, 4, '70', black, 0, 0, 1.0, &ftext., 6);
%label(44.0, 5, '0', black, 0, 0, 1.0, &ftext., 6);

/*X轴*/
%system(2, 2);
%line(-70, 0, 70, 0, black, 1, 1);
run;```
1. 画分组因素、95%可信区间、反应率的值，因为要用Y轴的值加画布的百分比值来确定Graphics Output Area中的位置故用%system(3, 2)，代码如下：
```data anno2;
set demo;
length TEXT \$200.;
%system(3, 2);
%label(2, ORD2, ITEM, black, 0, 0, 1, &ftext., 6);
%label(63, ORD2, DIFLU, black, 0, 0, 1, &ftext., 6);
%label(82.5, ORD2, RATE1, black, 0, 0, 1, &ftext., 6);
%label(92.5, ORD2, RATE2, black, 0, 0, 1, &ftext., 6);
drop ORD: ITEM DIFF LOW UP DIFLU RATE1 RATE2;
run;```
1. 画95%可信区间的线，代码如下：
```data anno3;
set demo;
%system(2, 2);
%line(LOW, ORD2, UP, ORD2, black, 1, 1);
drop ORD: ITEM DIFF LOW UP DIFLU RATE1 RATE2;
run;```
1. 画参考线，代码如下：
```data anno4;
%system(2, 2);
%line(0, 0, 0, 36, black, 2, 1);
run;```
1. 将Annotation的数据集连在一起：
```data anno;
set anno1-anno4;
run;```
1. 设置坐标属性，通过Marker Font来实现菱形显示DIFF的值，代码如下：
```/*图形属性*/
symbol1 i=none v=p c=black f=marker h=1;

/*坐标轴*/
axis1 minor=none major=none order=(0 to 36 by 1) label=none value=none offset=(0, 5) origin=(0, 4) c=white;
axis2 minor=none order=(-70 to 70 by 70) label=none offset=(27, 40) origin=(0, 4) style=0 value=none;

goptions ftext=&ftext htext=8pt hsize=50cm vsize=16cm noborder;

/*画图*/
ods listing close;
proc gplot data=demo;
plot ORD*DIFF/haxis=axis2
vaxis=axis1
anno=anno
nolegend
noframe;
run ;
quit;

ods rtf close;
ods listing;```

0 条评论

• ### 如何用SAS发送邮件

SAS程序猿/媛在工作中可能会碰到需要用SAS来发送邮件通知的问题，如将一个宏程序执行信息或者某个程序生成的结果发送给指定用户。如上图，就是一个宏执行完毕后发送...

• ### Annotate Facility之生存曲线

在研究肿瘤的临床实验中，通常要进行生存分析。其中最重要的分析方法之一就是乘积极限法（product-limit），简称积限法或PL法，它是由统计学家Kaplan...

• ### SAS中产生笛卡尔积的几种方法

在平时写程序的时候，有时候我们在LOG中会看到类似下图的提示，而实际上笛卡尔积可能又的确是我们所要的结果。下面介绍几种产生笛卡尔积的方法。

• ### 资源 | 如何建设一个成熟的GitHub项目？

人们出于各种原因在GitHub上发布他们的代码项目，大多数是因为他们想向公众展示编码技能或推广自己的产品。考虑到这一点，我们可以用4个标准点来定义“成功”的Gi...

• ### BAT公司校招有增有减 ，盘点互联网公司2015年校园招聘

在众多行业中，互联网在过往几年，也属于较热门的第一梯队之中。不过，在2015年的经济形势下，大家不由地疑问，互联网企业的招聘还会持续吗？

• ### Equation Group（方程式组织）

众所周知，Equation Group这一黑客团伙与美国国家安全局（NSA）的关系一直十分密切。而且外界也普遍认为，Equation Group是美国国家安全局...

• ### Linux调试工具

Printf(“valriable x has value = %d\n”, x)

• ### 使用request download 同步具有层级结构的equipment - scenario2

版权声明：署名，允许他人基于本文进行创作，且必须基于与原先许可协议相同的许可协议分发本文 （Creative Commons）

• ### 机器学习day5

网格搜索应该是最简单的超参数搜索算法。采用较大的搜索范围和较小的步长。十分耗费计算资源和时间。一般是先设置较大的搜索范围和较大的步长，来寻找全局最优值的可能位置...

• ### Redis的高级特性与应用场景(二)

Redis是一种基于客户端-服务端模型以及请求/响应协议的TCP服务。 这意味着通常情况下一个请求会遵循以下步骤：