SAS-将多个图形合并为一个pdf(空白页)

SAS-将多个图形合并为一个pdf(空白页),pdf,graph,sas,Pdf,Graph,Sas,我的问题如下。我通过宏循环创建了2个图形,我想把它们放到一个pdf页面中。在互联网上,我发现了这个解决方案,它运行良好,可以创建一页两张图的pdf文档: ods _all_ close; options papersize="ISO A4" orientation=portrait; ods pdf file="C:\JJ\lapse_monitoring\lm201712_TEST\GRAF\sample.pdf"; ods graphics / width=12cm height=12cm

我的问题如下。我通过宏循环创建了2个图形,我想把它们放到一个pdf页面中。在互联网上,我发现了这个解决方案,它运行良好,可以创建一页两张图的pdf文档:

ods _all_ close;
options papersize="ISO A4" orientation=portrait;
ods pdf file="C:\JJ\lapse_monitoring\lm201712_TEST\GRAF\sample.pdf";

ods graphics / width=12cm height=12cm;
ods layout gridded columns=1;

ods region;
proc sgplot data=sashelp.class;
vbox age / group=sex;
run;

ods region;
proc sgplot data=sashelp.class;
histogram age;
run;
ods layout end;
ods pdf close;
但是如果我对代码使用相同的逻辑,SAS会创建一个pdf文件,前两页为空白,而我想要的输出会出现在第三页。我的问题是为什么添加了两个空白页,以及如何更正代码以消除它们

data out_i_a; set sashelp.retail; run;
data out_ii_b; set sashelp.retail; run; 

data y;
length saz tef $100;
input saz $ tef $; 
datalines;
i a
ii b
;
run;

%macro grafy();
proc sql;
  select count(*) into: pocet from y;
quit;

ods _all_ close;
/*goptions reset=all hsize=22cm vsize=10cm;*/
ods pdf file="C:\TOT_test.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();
< >空白页的问题可以通过添加< /P>来解决。
goptions reset=all hsize=22cm vsize=10cm; 

我无法复制您的问题,但我强烈建议使用SGPLOT而不是GPLOT。这是一个现代的、受支持的图形选项。这将更容易适应这种特殊的需要

例如:

ods _all_ close;
options papersize="ISO A4" orientation=portrait;
ods pdf file="C:\temp\sample.pdf";

ods graphics / width=12cm height=12cm;
ods layout gridded columns=1;

ods region;
proc sgplot data=sashelp.class;
scatter x=weight y=age/x2axis markercharattrs=(color=blue)  markerfillattrs=(color=blue) markerattrs=(symbol=circlefilled); 
scatter x=height y=age/ markercharattrs=(color=red) markerfillattrs=(color=red) markerattrs=(symbol=diamondfilled);
xaxis label="Height";
x2axis label="Weight";
yaxis label="Age";
run;

ods region;
proc sgplot data=sashelp.class;
scatter x=weight y=sex/x2axis markercharattrs=(color=blue) filledoutlinedmarkers markerfillattrs=(color=blue) markerattrs=(symbol=circlefilled); 
scatter x=height y=sex/ markercharattrs=(color=red) filledoutlinedmarkers markerfillattrs=(color=red) markerattrs=(symbol=diamondfilled);
xaxis label="Height";
x2axis label="Weight";
yaxis label="Sex";
run;ods layout end;
ods pdf close;

请注意,您应该始终发布一个代码示例,该示例既可以复制问题,也可以由我们使用嵌入数据运行,也可以使用示例sashelp.class/cars/etc.data运行。否则很难复制您的问题。ODS图形语句不会影响GPLOT。你需要穿礼服。但是,如果您将图形大小设置为12cm×12cm,这比标准页面大,因此会出现问题。@Reeza A4是21x29 cm,因此12cm×12cm很合适。@Joe但是纸张大小设置被注释掉了,所以它将使用默认值,除非以前运行过。@Reeza我想我不知道默认值是什么,但我假设超过12cm。。。?我的默认值是字母,它是8.5乘11,也就是12厘米