想起以前一个读者问的问题,就是能不能看到proc lifetest过程在Result窗口产生的图 的底层代码?
我对这个也挺好奇的,搜索了一下SAShelp官网和community,没有找到直接的一个选项输出画图的代码,应该也没有这个选项。
但是有一个东西需要大家注意:大多数过程步能通过ODS Graphics选项输出图作为过程步输出的一部分,支持这个的过程步可以参考 Procedures That Support ODS Graphics。
ODS Graphics默认状态下可能是打开的,可能也是关闭的,这取决于你的操作系统,所以,如果我们想让过程步输出图形,最好加上ods graphics on;过程步运行完之后再关上:ods graphics off;
所以我就在想proc lifetest底层应该也是通过ODS Graphics输出图形,既然知道了这个,我们就知道了去哪里查看代码了。
如果我们想画图,参考一些基础的代码,SAS提供专门的地方供我们手动定制图形,下面我以画生存图为例:
先通过proc lifetest输出我们需要的数据,生成X轴(time)和Y轴(生存概率)的数据
/*odsgraphics on;*/odsoutput survivalplot=survival;proclifetest data=sashelp.BMT;timeT*STATUS(0);stratagroup;run;/*ods graphics off;*/
这是proc lifetest在result窗口自动生成的图形
那么我们如何查看这背后涉及的代码呢?
在SASbase里的tools---odsGraphics designer,点开之后就能打开图形设计器,里面包括了大多数常见的图形,在这里面我们就可以自定义设计一些图形,只需要点一点就可以输出想要的图形。
我们选择生存曲线图,然后导入我们刚才生存的生存数据集,定义X轴和Y轴,过程中会出一些警告,我也不知道为什么,忽略点继续就可以了。然后只能选择一种图形,一般画生存曲线,我们是折线图和散点图的结合。如果读者知道能选择两个图形的话欢迎告知。
确定之后就能输出对应的图形,那么如果我们想看图形对应的代码呢,点击view-code就能看到图形对应的代码了。
然后我们定义散点图,画出删失的数据,就能看到散点图对应的代码。所以proc lifetest过程应该就是通过这个过程生成图形。
当然我还是建议自己写GTL,能定制更多的属性,而且网上有很多参考的代码。
如果想了解其他图形背后的代码,自己选择想看的图形就好了,我觉得作为了解GTL的基础代码挺好的。