Is it possible to create a panel graph and include some annotation in each panel?
For example, I have a panel graph where each panel is a series of line graphs. I'd like to have a spot in each panel that lists, say, the proportion of the sample shown in each panel. Is there a way to do this with GTL? I haven't seen any example of this but I would love to be able to to do it.
Thanks,
Jed
Your best option with SAS 9.3 is to use GTL's LAYOUT DATAPANEL with the INSET option. In 9.3, the inset data is MERGED (not match-merged) with the original data such that it is applied ordinally to each cell. We added match-merge ability in SAS 9.4, as well as give you the ability to use insets with SGPANEL. Below is a simple example for 9.3. There are addition options for insets to control features such as appearance and position.
Hope this helps!
Dan
data inset;
label numstud = "Number of students";
numstud = 9; output;
numstud = 10; output;
run;
proc sort data=sashelp.class out=class; by sex; run;
data merged;
merge class inset;
run;
proc template;
define statgraph mypanel;
begingraph;
layout datapanel classvars=(sex) / columns=2 inset=(numstud);
layout prototype;
scatterplot x=age y=height;
endlayout;
endlayout;
endgraph;
end;
run;
proc sgrender data=merged template=mypanel; run;
What version of SAS are you running?
Sorry, it's been a while. My Forum Decorum is rusty! I'm using 9.3.
Sorry, one more question. You asked about doing this in GTL, but you also have a tag about SGPANEL. Can you post a snippit of your graph code?
I asked about both because I know from experience that some things are possible only with writing a custom graph template, but right now I'm using sgpanel until I hit its limitations.
my code is something like:
proc sgpanel ;
panelby num_courses num_credits ;
series x = month y = gpa / group = class_yr ;
run ;
so there's a line for each class (e.g., Class of 2014) that traces GPA over time on the same chart, with separate panels based on the number of courses and credits attempted.
what I'd like is to have sone text In each panel listing the total number of students who are represented in each panel as well as the percentage of the total that represents.
thanks,
jed
Your best option with SAS 9.3 is to use GTL's LAYOUT DATAPANEL with the INSET option. In 9.3, the inset data is MERGED (not match-merged) with the original data such that it is applied ordinally to each cell. We added match-merge ability in SAS 9.4, as well as give you the ability to use insets with SGPANEL. Below is a simple example for 9.3. There are addition options for insets to control features such as appearance and position.
Hope this helps!
Dan
data inset;
label numstud = "Number of students";
numstud = 9; output;
numstud = 10; output;
run;
proc sort data=sashelp.class out=class; by sex; run;
data merged;
merge class inset;
run;
proc template;
define statgraph mypanel;
begingraph;
layout datapanel classvars=(sex) / columns=2 inset=(numstud);
layout prototype;
scatterplot x=age y=height;
endlayout;
endlayout;
endgraph;
end;
run;
proc sgrender data=merged template=mypanel; run;
Save $250 on SAS Innovate and get a free advance copy of the new SAS For Dummies book! Use the code "SASforDummies" to register. Don't miss out, May 6-9, in Orlando, Florida.
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.
Ready to level-up your skills? Choose your own adventure.