BookmarkSubscribeRSS Feed
_user
Calcite | Level 5

Hello All , 

My Statistician is looking for something similar to it 

 

in a single plot, plot changes from Baseline to  V1 and V7 stratified by treatment using boxplots that are complemented with jitter to show

  • occurrence (yes,no) of XXX (by jitter shape feature)
  • Prior use of Treat A {yes,no} (by jitter color feature)

State number of samples available for each visit and treatment arm within the plot.

 

I do not have example data to show , I am looking for an example that is similar to this . Can anybody give me an example or reference to existing example ? 

4 REPLIES 4
PGStats
Opal | Level 21

Adding an example graph (drawn by hand, even) would help a lot to understand your question.

PG
ballardw
Super User

Coming up with some rough example data may help even structure the details of your question. As it is I am not sure if we are discusging 4 variables, 12 variables or something in between.

 

A comment on changing appearance of items in general based on the value of another variable: The typical approach involves a single group variable. So it appears that you would have to reduce the combinations reference here:

occurrence (yes,no) of XXX (by jitter shape feature)

Prior use of Treat A {yes,no} (by jitter color feature)

to a single variable that indicates the combination of shape and color

Then a DATTRMAP keyed to the value of that single variable could assign the color and marker shape when that variable is used as the group variable

 

_user
Calcite | Level 5

All I agree with you all about  mock , when I asked the statistician he referred this is in his mind using R code 

 

 

p <- ggplot(data = Data, aes(y=Chg To Baseline ,  x=  VisitBy TRT01 Agroup Factor))
p + geom_boxplot()  +  theme_bw() + geom_jitter(aes(colour = Prior use of Treat A {yes,no}  , shape= occurrence (yes,no) of XXX ))

 

Well not sure I am right or wrong but 

 

While searching for an Example I came across this example by Sanjay Matange at his location but need to add a second Jitter to it 

 

https://blogs.sas.com/content/graphicallyspeaking/2015/12/23/box-plot-with-stat-table-and-markers/#p...

https://blogs.sas.com/content/graphicallyspeaking/files/2015/12/Box_Stat_Scatter.txt

 

data merged;
  set sashelp.heart 
         sgplotdata(where=(value ne . and 
                                stat in ('Q1' 'Q3' 'STD')));
run;

 

proc sgplot data=mergedGroup2;
  label value='STD';
  format std 5.2 q1 q3 4.1;
  vbox cholesterol / category=deathcause group=sex nooutliers 
            nofill grouporder=ascending name='a';
  scatter x=deathcause y=cholesterol / group=sex groupdisplay=cluster 
                 grouporder=ascending jitter
                markerattrs=(symbol=circlefilled size=5) 
               transparency=0.95 clusterwidth=0.7;
  xaxistable q1 / x=cat class=grp classdisplay=cluster colorgroup=grp location=inside classorder=ascending;
  xaxistable q3 / x=cat class=grp classdisplay=cluster colorgroup=grp location=inside classorder=ascending;
  xaxistable std / x=cat class=grp classdisplay=cluster colorgroup=grp location=inside classorder=ascending;
  xaxis display=(nolabel);
  keylegend 'a' / linelength=24;
run;

ballardw
Super User

Since I don't grok r then that doesn't help me at all.

Do note that your example uses a single group variable to control appearance.

 

This would create the combinations of values, uses the SASHELP.CLASS data set you should have available.

Proc sql;
   create table groups as
   select distinct sex,age,'JitterGrp' as id, catx('_',sex,age) as value
   from sashelp.class
   ;
quit;

The variables ID and Value are required names for a DATTRMAP data set.

 

Use a data step to add any discrete attributes you want such as markercolor markersize markersymbol for each of the values.

 

Add a variable to your data set for grouping using the same syntax as used to make the value variable.

Add the Dattrmap= option to SGPLOT or SGPANEL proc statement.

Use the grouping variable as the GROUP= option and indicate the ATTRID= the value of ID you associate with the group values, JitterGrp above.

Note that a single Dattrmap dataset may have multiple definitions which is why the ID values  and attrid= assignment are required when using this option.

SAS Innovate 2025: Call for Content

Are you ready for the spotlight? We're accepting content ideas for SAS Innovate 2025 to be held May 6-9 in Orlando, FL. The call is open until September 25. Read more here about why you should contribute and what is in it for you!

Submit your idea!

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