SAS高级ODS图形:PROCSGPLOT,BY组和SG注释

在我们开始之前,让我们更好地了解当您运行PROC SGPLOT以及BY语句和SG注释数据集时会发生什么。

这个例子为每个通过Sex运行PROC SGPLOT生成的图形添加了一个注释,单词“Students”。

不需要TMPLOUT =选项。但是,它显示了PROC SGPLOT编写的用于制作图形的模板。如果您真的想了解PROC SGPLOT的作用,您需要了解模板。它存储在文件tmp1.tmp中,如下所示(添加缩进后)。

出于我们的目的,我想指出的是DRAWTEXT语句。它提供了注释。虽然PROC SGRENDER接受SGANNO =数据集,但不是这个图形的创建方式。相反,PROC SGPLOT读取SG注释数据集并将每一行转换为GTL DRAW语句。

现在考虑SG注释数据集,其具有与DATA =数据集中的BY变量匹配的BY变量。

如果您使用BY语句和SGANNO =选项运行PROC SGPLOT,则在两个图中都会同时获得两个注释,这几乎肯定不是您想要的。

这是文件tmp2.tmp,其中包含生成的GTL:

现在有两个DRAWTEXT语句。两者都是无条件使用的。因此,如果我们想在每个图中使用不同的注释,我们必须以其他方式处理这个问题。如果要为每个图形添加不同的文本,则不需要SG注释。您可以修改输入数据集并在PROC SGPLOT中使用TEXT语句。

使用这种方法以及TEXT和POLYGON语句可以做很多事情,而不需要SG注释。尽管如此,SG注释非常有用,与TEXT和POLYGON语句不同,它为您提供了各种坐标系。

接下来,我们将创建一个SG注释数据集以及一个ID变量(名为ID),其值与BY变量Sex相匹配。

现在,PROC SGPLOT仅用于将模板写入文件tmp3.tmp。

这是文件(不添加任何缩进)。

您可以使用DATA步骤编辑此模板并将其提交给SAS。下面的语句添加了一个PROC TEMPLATE语句,将模板名称从sgplot更改为by,并添加动态变量和ANNOTATE语句。

您可以提交以下语句以查看已编辑的模板。

接下来显示编译的模板。

请注意,编译的模板与原始模板不完全匹配。特别是,DYNAMIC语句被组合在一起。使用PROC TEMPLATE查看模板的一个好处是模板很好地缩进。

请注意,动态变量_byval_与ID =值匹配。

现在,您可以使用PROC SGRENDER以及SGANNO =选项和BY语句来为每个图形获取单独的注释。

替代方法要求您使用GTL编写图形模板,然后使用PROC SGRENDER。虽然这种PROC SGPLOT方法有更多步骤,但它更容易。在PROC SGPLOT中指定如何构建图形比从头开始编写模板更容易。您将需要一个DATA步骤来修改该模板,但这并不难,因为您可以简单地复制我的代码。修改模板的DATA步骤中没有特定于此示例的内容。


可下载资源

​非常感谢您阅读本文,如需帮助请联系我们!


关于作者

Kaizong Ye拓端研究室(TRL)的研究员。

本文借鉴了作者最近为《R语言数据分析挖掘必知必会 》课堂做的准备。


 
QQ在线咨询
售前咨询热线
15121130882
售后咨询热线
0571-63341498