BookmarkSubscribeRSS Feed
🔒 This topic is solved and locked. Need further help from the community? Please sign in and ask a new question.
sanjay1
Obsidian | Level 7

Hi SAS community,

 

I am tryng to draw 5 gmaps on page using greplay.But am not getting the maps one the page istead am getting an empty page.

my log window showing the NOTE:  Graph 2 not on igout catalog.
NOTE: Graph 3 not on igout catalog.
NOTE: Graph 4 not on igout catalog.
NOTE: Graph 5 not on igout catalog.

 

Below is my code..please guide

 


proc gslide gout=grafct;
%INCLUDE "&folder_path.\map1.sas";
%map1(dept,loc);
run;

%INCLUDE "&folder_path.\map2.sas";
%map2(dept,loc);
run;

%INCLUDE "&folder_path.\map3.sas";
%map3(dept,loc);
run;


%INCLUDE "&folder_path.\map4.sas";
%map4(dept,loc);
run;

%INCLUDE "&folder_path.\map5.sas";
%map5(dept,loc);
run;


proc greplay tc=work.tempcat nofs;
tdef nwtemp des="Five panel template"
1 / llx = 0 lly = 51
ulx = 0 uly = 100
urx = 33 ury = 100
lrx = 33 lry = 51

2 / llx = 34 lly = 51
ulx = 34 uly = 100
urx = 66 ury = 100
lrx = 66 lry = 51

3 / llx = 67 lly = 51
ulx = 67 uly = 100
urx = 100 ury = 100
lrx = 100 lry = 51

4 / llx = 0 lly = 0
ulx = 0 uly = 50
urx = 33 ury = 50
lrx = 33 lry = 0

5 / llx = 34 lly = 0
ulx = 34 uly = 50
urx = 66 ury = 50
lrx = 66 lry = 0;

template nwtemp;
list template;
quit;

ods pdf file="path.pdf" ;
proc greplay igout=grafct gout=excat tc=tempcat nofs;
template=nwtemp;
treplay 1:1 2:2 3:3 4:4 5:5;
quit;
ods pdf close;

 

Thanks,

Sanjay

 

1 ACCEPTED SOLUTION

Accepted Solutions
Darrell_sas
SAS Employee

Something like this?

This prints 5 maps on a page.  You can change it around anyway you like.  This puts the 5th map on the top.  You can put it on the bottom or where ever you want.  You can make it bigger.

 

goptions reset=all border;
proc greplay tc=work.tempcat nofs;
tdef newtemp des="Five panel template"
     1/llx=0   lly=0
       ulx=0   uly=33
       urx=50  ury=33
       lrx=50  lry=0
       color=navy

     2/llx=0   lly=33
       ulx=0   uly=66
       urx=50  ury=66
       lrx=50  lry=33
       color=lime

     3/llx=50 lly=33
       ulx=50 uly=66
       urx=100 ury=66
       lrx=100 lry=33
       color=yellow

     4/llx=50 lly=0
       ulx=50 uly=33
       urx=100 ury=33
       lrx=100 lry=0
       color=cyan

     5/llx=0 lly=66
        ulx=0 uly=100
        urx=50 ury=100
        lrx=50 lry=66
        color=lipk;
template newtemp;
 list template;
 quit;

/*Change the program before to:*/
goptions reset=all hsize=5.5in vsize=5.5in;     /*Change*/
goptions device=pdf; 
proc greplay gout=sasuser.excat igout=sasuser.excat nofs
   /*tc=sashelp.templt template=l2r2;*/
   tc=work.tempcat template=newtemp;    /*Change*/
   device win;
   treplay 1:gmap 2:gmap1 3:gmap2 4:gmap3 5:gmap4;   /*Change*/
quit; 
ods listing close;
ods html;

View solution in original post

10 REPLIES 10
RW9
Diamond | Level 26 RW9
Diamond | Level 26

Unfortunately most of the code is missing from what you posted there.  I would however suggest you look into more modern methods of producing the output, for example a data lattice with your individual plots given within that.  It wil simplfy things:

http://support.sas.com/documentation/cdl/en/grstatug/67914/HTML/default/viewer.htm#n14oy970srz6rgn1p...

There are also plenty more examples here:

http://blogs.sas.com/content/graphicallyspeaking/

 

sanjay1
Obsidian | Level 7

Hi RW9,

 

Basically I want to draw 5 gmaps in one ods pdf. Is there is any reference programs are any help is appreciated

Darrell_sas
SAS Employee

I think you want to create a template and then GREPLAY into it.

Here are examples of creating a template and greplay using the template.

http://support.sas.com/documentation/cdl/en/graphref/65389/HTML/default/viewer.htm#n03pr4atkbt2yzn1p...

http://support.sas.com/documentation/cdl/en/graphref/65389/HTML/default/viewer.htm#n0zqluxg8kkrign1t...

 

Darrell_sas
SAS Employee

By the way, here are 4 maps on a pdf page.  Is it possible that you are making your images bigger than the pdf page or something like that?

 

goptions reset=all hsize=2.75in vsize=2.06in; 
ods listing close;
ods html;
proc gmap data=mapsgfk.us_states map=mapsgfk.us_states gout=sasuser.excat;  id id; choro id / nolegend; run;
proc gmap data=mapsgfk.us_counties map=mapsgfk.us_counties gout=sasuser.excat;  id id; choro id / nolegend ; run;
proc gmap data=mapsgfk.france map=mapsgfk.france gout=sasuser.excat;  id id; choro id / nolegend; run;
proc gmap data=mapsgfk.namerica map=mapsgfk.namerica gout=sasuser.excat;  id id; choro id /nolegend; run; quit;

goptions reset=all hsize=5.5in vsize=4.12in; 
goptions device=pdf; 
proc greplay gout=sasuser.excat igout=sasuser.excat nofs
   tc=sashelp.templt template=l2r2;
   device win;
   treplay 1:gmap 2:gmap1 3:gmap2 4:gmap3;
quit; 
ods listing close;
ods html;

 

sanjay1
Obsidian | Level 7

Hi Darrell,

 

Thats really helps me, but I want to add 5 gmaps on one page is there is anyway to do this.

 

Thanks & Regards,

Sanjay

ballardw
Super User

Any warnings or error messages?

 

I would double check the names of the output catalogs and that you have the gout settings to be replace as you may have items in the catalog you don't want.

Without 1)data 2) complete code and or 3) log with option mprint symbolgen turned on it is a bit difficult to diagnose specific issues.

Darrell_sas
SAS Employee

Something like this?

This prints 5 maps on a page.  You can change it around anyway you like.  This puts the 5th map on the top.  You can put it on the bottom or where ever you want.  You can make it bigger.

 

goptions reset=all border;
proc greplay tc=work.tempcat nofs;
tdef newtemp des="Five panel template"
     1/llx=0   lly=0
       ulx=0   uly=33
       urx=50  ury=33
       lrx=50  lry=0
       color=navy

     2/llx=0   lly=33
       ulx=0   uly=66
       urx=50  ury=66
       lrx=50  lry=33
       color=lime

     3/llx=50 lly=33
       ulx=50 uly=66
       urx=100 ury=66
       lrx=100 lry=33
       color=yellow

     4/llx=50 lly=0
       ulx=50 uly=33
       urx=100 ury=33
       lrx=100 lry=0
       color=cyan

     5/llx=0 lly=66
        ulx=0 uly=100
        urx=50 ury=100
        lrx=50 lry=66
        color=lipk;
template newtemp;
 list template;
 quit;

/*Change the program before to:*/
goptions reset=all hsize=5.5in vsize=5.5in;     /*Change*/
goptions device=pdf; 
proc greplay gout=sasuser.excat igout=sasuser.excat nofs
   /*tc=sashelp.templt template=l2r2;*/
   tc=work.tempcat template=newtemp;    /*Change*/
   device win;
   treplay 1:gmap 2:gmap1 3:gmap2 4:gmap3 5:gmap4;   /*Change*/
quit; 
ods listing close;
ods html;
sanjay1
Obsidian | Level 7

Hi Darrel,

 

Thank you very much, that works for me..But how could I get a Title statement at the top of the page. I have tried with ods pdf text and title statement but I didnt get title statment on the page.

 

ods pdf file="path.pdf";

title h=2 justify=c "xcxcx";

proc greplay gout=sasuser.excat igout=sasuser.excat nofs

 tc=work.tempcat template=newtemp; device win; treplay 1:gmap 2:gmap1 3:gmap2 4:gmap3 5:gmap4; /*Change*/

run;

quit; ods pdf close;

 

when am Using the ods pdf text, then text is coming in one page and the 5 maps in the another page. I need both title and 5 maps in one page.Is there is anyway please giude.

 

Thanks & Regards,

Sanjay

 

e75wez1
Calcite | Level 5

Sanjay,

You can use annotate your titles with "Proc gslide" by adding the code below in front of your code.

 

Ethan

 

%let title1=DASHBOARD REPORT;

%let title2=in X Market;

 

/* Define fonts for indicator and dashboard titles and text. */

%let ftitle='albany amt/bold';

 

 

data anno_titl;

length function color $8 style $20 text $100;

xsys='3'; ysys='3'; hsys='3'; when='a';

function='label';

position='5';

 

 

/* Annotated Title Text at top of page */

x=50;

size=2.3; color='purple';

style="&ftitle";

y=99.5; text="&title1";

output;

size=1.7; color='black';

style="&ftitle";

y=y-2.8; text="&title2";

output;

 

run;

 

/* Draw the titles on a blank slide and save the output in a

GRSEG named titles. */

goptions hsize=10in vsize=7.5in; /* Modified by SAS */

title;

footnote;

proc gslide name="titles" anno=anno_titl;

run;

Darrell_sas
SAS Employee

I think this is correct, but I think you will need to add a title spot to your template to get it on the same page.

See the following:

http://support.sas.com/documentation/cdl/en/graphref/67881/HTML/default/viewer.htm#n02rar8udulzhjn17...

sas-innovate-2024.png

Don't miss out on SAS Innovate - Register now for the FREE Livestream!

Can't make it to Vegas? No problem! Watch our general sessions LIVE or on-demand starting April 17th. Hear from SAS execs, best-selling author Adam Grant, Hot Ones host Sean Evans, top tech journalist Kara Swisher, AI expert Cassie Kozyrkov, and the mind-blowing dance crew iLuminate! Plus, get access to over 20 breakout sessions.

 

Register now!

How to Concatenate Values

Learn how use the CAT functions in SAS to join values from multiple variables into a single value.

Find more tutorials on the SAS Users YouTube channel.

Click image to register for webinarClick image to register for webinar

Classroom Training Available!

Select SAS Training centers are offering in-person courses. View upcoming courses for:

View all other training opportunities.

Discussion stats
  • 10 replies
  • 2245 views
  • 0 likes
  • 5 in conversation