SAS - 带有更改书签的 pdf 输出
SAS - pdf output with changed bookmarks
我的问题如下 - 我有两个数据集,我通过宏循环从中创建了 2 * 2 个图表。我将这两个图表绘制到 pdf 文件中,第 1 页上有前 2 个图表,第 2 页上有其他图表。
输出的 pdf 很好,我唯一想更改的是书签。我希望它们包含一些关于图表的详细信息——每张图表都有一个单独的原始书签。
有没有一些简单的方法可以做到这一点?我通过 proc 报告找到了一些复杂的解决方案,但是我当前的代码有什么简单的方法吗?
data out_i_a; set sashelp.retail; run;
data out_ii_b; set sashelp.retail; run;
data y;
length saz tef 0;
input saz $ tef $;
datalines;
i a
ii b
;
run;
%macro grafy();
proc sql;
select count(*) into: pocet from y;
quit;
ods _all_ close;
goptions hsize=20cm vsize=8cm;
ods pdf file="\srv05\nt05a\GRAF\TOT_testing.pdf";
ods layout gridded columns=1;
%do i=1 %to &pocet;
data _null_;
set y (obs=&i);
call symput("saz" ,strip(saz));
call symput("tef" ,strip(tef));
run;
ods region;
ods pdf text="&saz._&tef";
symbol1 interpol=join height=10pt VALUE=NONE LINE=1 WIDTH=1 CV= _STYLE_;
symbol2 interpol=join height=10pt VALUE=NONE LINE=1 WIDTH=1 CV= _STYLE_;
Legend1 value=('SALES' 'YEAR');
axis1 label=('# sales');
axis3 label=('# year');
axis2 label=('date');
proc gplot data= out_&saz._&tef;
plot (SALES)*DATE / overlay skipmiss
VAXIS=AXIS1
HAXIS=AXIS2 LEGEND=Legend1;
plot2 (YEAR)*DATE / overlay skipmiss
VAXIS=AXIS3
HAXIS=AXIS2 LEGEND=Legend1;
run;
ods region;
symbol1 interpol=join height=10pt VALUE=NONE LINE=1 WIDTH=1 CV= _STYLE_;
symbol2 interpol=join height=10pt VALUE=NONE LINE=1 WIDTH=2 CV= _STYLE_;
Legend1 value=('year' 'month');
axis1 label=('in %, p.a.');
axis2 label=('date');
proc gplot data= out_&saz._&tef;
plot (YEAR MONTH)*DATE / overlay skipmiss
VAXIS=AXIS1
HAXIS=AXIS2 LEGEND=Legend1;
run;
%end;
ods layout end;
ods pdf close;
%mend;
%grafy();
当前要更改的书签是自动创建的,如下:
GPlot 程序 - 年份图(按日期)
GPlot 程序 - 按日期绘制 MONTH
GPlot 程序 - 年份图(按日期)
GPlot 程序 - 按日期绘制 MONTH
- 在每个
Proc GPLOT
之前,您可以发出一个 ODS PROCLABEL
语句来替换书签顶层中显示的默认文本。
- 在每个
PLOT
语句中添加 / description=
以指定书签二级文本。
例如:
ODS PROCLABEL "&saz &tef SALES"; /* ADD THIS */
proc gplot data= out_&saz._&tef;
plot (SALES)*DATE / overlay skipmiss
DESCRIPTION = "by Date" /* ADD THIS */
VAXIS=AXIS1
HAXIS=AXIS2 LEGEND=Legend1;
plot2 (YEAR)*DATE / overlay skipmiss
VAXIS=AXIS3
HAXIS=AXIS2 LEGEND=Legend1;
我的问题如下 - 我有两个数据集,我通过宏循环从中创建了 2 * 2 个图表。我将这两个图表绘制到 pdf 文件中,第 1 页上有前 2 个图表,第 2 页上有其他图表。
输出的 pdf 很好,我唯一想更改的是书签。我希望它们包含一些关于图表的详细信息——每张图表都有一个单独的原始书签。
有没有一些简单的方法可以做到这一点?我通过 proc 报告找到了一些复杂的解决方案,但是我当前的代码有什么简单的方法吗?
data out_i_a; set sashelp.retail; run;
data out_ii_b; set sashelp.retail; run;
data y;
length saz tef 0;
input saz $ tef $;
datalines;
i a
ii b
;
run;
%macro grafy();
proc sql;
select count(*) into: pocet from y;
quit;
ods _all_ close;
goptions hsize=20cm vsize=8cm;
ods pdf file="\srv05\nt05a\GRAF\TOT_testing.pdf";
ods layout gridded columns=1;
%do i=1 %to &pocet;
data _null_;
set y (obs=&i);
call symput("saz" ,strip(saz));
call symput("tef" ,strip(tef));
run;
ods region;
ods pdf text="&saz._&tef";
symbol1 interpol=join height=10pt VALUE=NONE LINE=1 WIDTH=1 CV= _STYLE_;
symbol2 interpol=join height=10pt VALUE=NONE LINE=1 WIDTH=1 CV= _STYLE_;
Legend1 value=('SALES' 'YEAR');
axis1 label=('# sales');
axis3 label=('# year');
axis2 label=('date');
proc gplot data= out_&saz._&tef;
plot (SALES)*DATE / overlay skipmiss
VAXIS=AXIS1
HAXIS=AXIS2 LEGEND=Legend1;
plot2 (YEAR)*DATE / overlay skipmiss
VAXIS=AXIS3
HAXIS=AXIS2 LEGEND=Legend1;
run;
ods region;
symbol1 interpol=join height=10pt VALUE=NONE LINE=1 WIDTH=1 CV= _STYLE_;
symbol2 interpol=join height=10pt VALUE=NONE LINE=1 WIDTH=2 CV= _STYLE_;
Legend1 value=('year' 'month');
axis1 label=('in %, p.a.');
axis2 label=('date');
proc gplot data= out_&saz._&tef;
plot (YEAR MONTH)*DATE / overlay skipmiss
VAXIS=AXIS1
HAXIS=AXIS2 LEGEND=Legend1;
run;
%end;
ods layout end;
ods pdf close;
%mend;
%grafy();
当前要更改的书签是自动创建的,如下:
GPlot 程序 - 年份图(按日期)
GPlot 程序 - 按日期绘制 MONTH
GPlot 程序 - 年份图(按日期)
GPlot 程序 - 按日期绘制 MONTH
- 在每个
Proc GPLOT
之前,您可以发出一个ODS PROCLABEL
语句来替换书签顶层中显示的默认文本。 - 在每个
PLOT
语句中添加/ description=
以指定书签二级文本。
例如:
ODS PROCLABEL "&saz &tef SALES"; /* ADD THIS */
proc gplot data= out_&saz._&tef;
plot (SALES)*DATE / overlay skipmiss
DESCRIPTION = "by Date" /* ADD THIS */
VAXIS=AXIS1
HAXIS=AXIS2 LEGEND=Legend1;
plot2 (YEAR)*DATE / overlay skipmiss
VAXIS=AXIS3
HAXIS=AXIS2 LEGEND=Legend1;