I need to give different line option depending upon the variable study in my dataset i.e. if the dataset has study = "study1" then the line=1 and if the data has study="study2" then line=2. Also, I am plotting the graph for various doses. Is there a way I can specify in SAS to change the line option ?
hi ... here's an example where line color and type varies by the value of the variable sex (there are 46 line patterns, 1 is solid, etc.)
look at the SYMBOL statements ... l=1 is short for line=1
proc sort data=sashelp.class out=class;
legend1 position=(top inside right) label=none across=1 shape=symbol(.0005,1) value=('FEMALE' 'MALE');
symbol1 v='6c'x f='wingdings' c=red i=smp66 l=1;
symbol2 v='6c'x f='wingdings' c=blue i=smp66 l=3;
proc gplot data=class;
plot weight*height=sex / legend=legend1;
ps lots of info in a SUGI paper (http://www2.sas.com/proceedings/sugi31/239-31.pdf)
Take a look at these two blog posts. I deal with this very issue and how you can make this happen using ODS graphics.
Hope this helps!
hi ... using your data (too many lines to make any sense ???) ...
libname x 'z:\gplot data.xls';
proc sort data=x."'#LN00453$'"n out=x;
goptions reset=all ftext='calibri' htext=2 gunit=pct;
symbol1 i=join v='6c'x f='wingdings' w=4 h=2 color=green;
symbol2 i=join v='6c'x f='wingdings' w=4 h=2 color=blue;
symbol3 i=join v='6c'x f='wingdings' w=4 h=2 color=grey;
symbol4 i=join v='6c'x f='wingdings' w=4 h=2 color=orange;
symbol5 i=join v='6c'x f='wingdings' w=4 h=2 color=red;
symbol6 i=join v='6e'x f='wingdings' w=4 h=2 color=green;
symbol7 i=join v='6e'x f='wingdings' w=4 h=2 color=blue;
symbol8 i=join v='6e'x f='wingdings' w=4 h=2 color=grey;
symbol9 i=join v='6e'x f='wingdings' w=4 h=2 color=orange;
symbol10 i=join v='6e'x f='wingdings' w=4 h=2 color=red;
symbol11 i=join v='ab'x f='wingdings' w=4 h=2 color=green;
symbol12 i=join v='ab'x f='wingdings' w=4 h=2 color=blue;
symbol13 i=join v='ab'x f='wingdings' w=4 h=2 color=grey;
symbol14 i=join v='ab'x f='wingdings' w=4 h=2 color=orange;
symbol15 i=join v='ab'x f='wingdings' w=4 h=2 color=red;
legend1 position=(top inside right) mode=protect across=1 label=none shape=symbol(.0005,2)pct;
title1 a=90 ls=2;
title2 a=-90 ls=2;
proc gplot data = x;
plot conc_ngml*Nominal__Time=subject__alias / legend=legend1 haxis=axis vaxis=axis2 noframe;
format conc_ngml 4.1;
Thanks for the code. Yes, I know too many lines on one plot will be very messy. But, I need to prepare this plot to see the difference between the two studies.
Is it also possible to get dotted lines (i.e using line=2) option whenever a subject is coming from study 2 and line = 1whenever a subject is coming from study 1?
Your code was really helpful. Thanks again.
hi ... the attached SAS code produced the two attached plots
I just took out the "by dose" and did two separate plots, changing the symbols from plot1 to plot2 to conform with the number of people in each study
I think it's correct, but you should check the allocation of people to study
Thanks a lot for your help.
So, we have to create two codes for different dose levels. I was hoping to make one code and tweak the symbol option so that it takes line=1 for study1 and line=2 for study2, maybe by using some macro etc. Because I will having more than 2 dose groups in my dataset and I wanted to avoid repeating my code.
hi ... given the choice of trying to write SAS code that would figure out the SYMBOL statement based on the data versus just doing with I did, I would say that the choice depends on how often you are going to do this
for the two plots, the effort of cutting/pasting code took a LOT less time that writing SAS code that would write SAS code for
or "when to hold 'em, when to fold 'em"
Registration is open! SAS is returning to Vegas for an AI and analytics experience like no other! Whether you're an executive, manager, end user or SAS partner, SAS Innovate is designed for everyone on your team. Register for just $495 by 12/31/2023.
If you are interested in speaking, there is still time to submit a session idea. More details are posted on the website.
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.