BookmarkSubscribeRSS Feed
SASSLICK001
Obsidian | Level 7

Hi All 

 

I am trying to produce boxplot using SAS GTL and ended up getting the following message in the log

 

"WARNING: The data for boxes is incomplete or invalid. Some boxes will not be drawn."

 

Can someone help me how to get rid of this warning message!

 

Thanks

John 

5 REPLIES 5
Reeza
Super User
You'd have to post your code, and preferably some sample data that will generate the error.
What version of SAS are you on?
SASSLICK001
Obsidian | Level 7
I am using SAS 9.4 TSL1M3
SASSLICK001
Obsidian | Level 7
TRTA TRTAN AVAL
A 1 5.265563
A 1 2.416991
A 1 6.361984
A 1 2.733437
A 1 4.215147
A 1 4.298788
A 1 3.76999
A 1 3.447105
A 1 3.17307
A 1 4.58969
A 1 5.020884
A 1 5.169635
A 1 2.244204
A 1 2.13761
A 1 2.61073
A 1 2.964504
A 1 3.140009
A 1 5.143698
A 1 4.861378
A 1 3.838215
A 1 2.769648
A 1 3.704952
B 2 3.105561
B 2 2.574498
B 2 6.451404
B 2 3.030039
B 2 2.99401
B 2 4.847858
B 2 3.997044
B 2 2.420613
B 2 5.188032
B 2 3.510903
B 2 3.144169
B 2 3.79773
B 2 3.302072
B 2 2.952558

 

proc template;
define statgraph box;
begingraph/ designwidth=9.3in designheight=4.5in border=yes;;
entrytitle "X" / textattrs=(size=9);

layout lattice / columns=1 rows=1 columnweights=(0.7) ;

layout overlay / yaxisopts=(linearopts=(tickvaluesequence=(start=1 end=7 increment=1) viewmin=1 viewmax=7) label='X')
xaxisopts=(display=(tickvalues label) label="Treatment Group");

boxplot x=trta y=eval(ifn(trtan=1,aval, .)) / whiskerpercentile=10 display=(mean median outliers caps fill) capshape=line
discreteoffset=0 boxwidth=.27 name='a' legendlabel="A"
outlineattrs=(color=blue thickness=2) outlierattrs=(color=blue symbol=square /*trianglefilled*/)
meanattrs=(color=blue symbol=asterisk)
medianattrs=(color=blue thickness=2)
whiskerattrs=(color=blue thickness=2);

boxplot x=trta y=eval(ifn(trtan=2,aval, .)) / whiskerpercentile=10 display=(mean median outliers caps fill) capshape=line
discreteoffset=0 boxwidth=.27 name='b' legendlabel="B"
outlineattrs=(color=red thickness=2) outlierattrs=(color=red symbol=square)
meanattrs=(color=red symbol=asterisk)
medianattrs=(color=red thickness=2)
whiskerattrs=(color=red thickness=2);
endlayout;
endlayout;
endgraph;
end;
run;

proc sgrender data=adpp template=box;;
run;

DanH_sas
SAS Super FREQ

You're attempting to use the ifn() expression to "where out" different category values so you treat the data as overlays instead of group data. This makes boxes with all missing values, causing the messages to be generated. It appears you're doing this to control the attributes for each box. A cleaner way to do this (which will also eliminate your messages) is to remove the ifn()'s and use attributes maps instead. That way, you can control the attributes for each group. If you need more information on attribute maps, look in this paper I wrote back in 2014: http://support.sas.com/resources/papers/proceedings14/SAS156-2014.pdf.

 

Hope this helps!

Dan

DanH_sas
SAS Super FREQ

Using the data from your example, the code for the solution I proposed is below. I used an attrmap data set instead of putting the attrmap directly in the template, as it gives you more flexibility and re-use for other templates you might use for rendering the same treatment groups.

 

data attrmap;
retain id "trtgrp";
length linecolor $ 4;
input value $ linecolor $;
cards;
A blue
B red
;
run;

 

proc template;
define statgraph box;
begingraph/ designwidth=9.3in designheight=4.5in border=yes;;
entrytitle "X" / textattrs=(size=9);
layout lattice / columns=1 rows=1 columnweights=(0.7) ;
           layout overlay / yaxisopts=(linearopts=(tickvaluesequence=(start=1 end=7 increment=1) viewmin=1 viewmax=7) label='X')
                                    xaxisopts=(display=(tickvalues label) label="Treatment Group");
                      boxplot x=trta y=aval / whiskerpercentile=10 display=(mean median outliers caps fill) capshape=line
                                   name='a' outlineattrs=(thickness=2) outlierattrs=(symbol=square /*trianglefilled*/) group=TRTA

                                   groupdisplay=cluster meanattrs=(symbol=asterisk) medianattrs=(thickness=2) whiskerattrs=(thickness=2);
           endlayout;
endlayout;
endgraph;
end;
run;
ods html;


proc sgrender data=adpp template=box dattrmap=attrmap;
dattrvar TRTA="trtgrp";
run;

sas-innovate-2024.png

Join us for SAS Innovate April 16-19 at the Aria in Las Vegas. Bring the team and save big with our group pricing for a limited time only.

Pre-conference courses and tutorials are filling up fast and are always a sellout. Register today to reserve your seat.

 

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
  • 5 replies
  • 2623 views
  • 0 likes
  • 3 in conversation