BookmarkSubscribeRSS Feed
ab11
Calcite | Level 5

Hello,

when I use this syntax in sgpanel (I am using LSAF = SAS9.4):

1)symbolchar name=sym1 char='2014'x ;
scatter x=avisitn y=mean / markerattrs=(symbol=sym1 size=10pt color=black) name="med";

I am not getting all datapoints right (half is visible, half is missing)

see attached file "symbolchar"

 

but when I use normal symbol=plus (commenting symbolchar statement)
2) scatter x=avisitn y=mean / markerattrs=(symbol=plus size=10pt color=black) name="med";

I am getting all results correctly.

 

I was using in previous graphs :

3) scatter x=avisit2n y=MEDIAN / MARKERCHAR=box_char MARKERCHARATTRS=(color= black size=10PT) yerrorlower = lci yerrorupper = uci ERRORBARATTRS=(color=black) name="med";

 

and in dataset:

box_char="--------";

but this produces legend that show squarefilled instead of dash

 

 

I want to know how to show dash as graphical representation of the mean on top of other scatter plots in procedure sgpanel.

Full sgpanel syntax for reference

 

proc sgpanel data = xxxx;
panelby tseqpg1 / border colheaderpos =top layout=columnlattice spacing = 0 novarname ONEPANEL sort = DATA;

refline 1000/ axis=y LINEATTRS=(pattern = mediumdash color = black) label="LLOQ";

scatter x=avisitn y=aval_resp / jitter legendlabel="Responder" markerattrs=(color=green symbol=circlefilled) name="r1";
scatter x=avisitn y=aval_noresp / jitter legendlabel="No Responder" markerattrs=(color=orange symbol=circle) name="nr1";

symbolchar name=sym1 char='2014'x ;
scatter x=avisitn y=mean / markerattrs=(symbol=sym1 size=25pt color=black) name="med";

colaxistable N MEAN RESPONDERS_RATE / NOMISSINGCHAR SEPARATOR X=avisitn statlabel name="stat_table" VALUEATTRS=(Size=7pt);
rowaxis logbase = 10 logstyle=logexpand type=log label="EU/ml" min = 100 max=10000 LOGVTYPE=EXPANDED MINOR minorcount=9
GRID GRIDATTRS=(color=grayee pattern=solid THICKNESS=1) MINORGRID MINORGRIDATTRS=(color=grayee pattern=solid THICKNESS=1);
colaxis type=linear integer label="Weeks" VALUES=( 1 3  5 7 9 11);
run;

 

1 REPLY 1
Rick_SAS
SAS Super FREQ

Here is some example data and a program that works in the latest version of SAS:

 

data have;
call streaminit(123);
do tseqpg1 = 0, 1;
   do avisitn = 1 to 4;
      mean = avisitn;
      do i = 1 to 30;
        y = rand("Normal", mean, 1);
        output;
      end;
   end;
end;
drop i;
run;

proc sgpanel data=have noautolegend;
panelby tseqpg1;
symbolchar name=sym1 char='2014'x / textattrs=(family='Arial Unicode MS' weight=bold);
scatter x=avisitn y=y / jitter transparency=0.5;
scatter x=avisitn y=mean / markerattrs=(symbol=sym1 size=40);
run;

Hopefully, it works for you. If not, supply some sample data. Maybe we can use a HIGHLOW or VECTOR statement to create the graph you want.

 

SAS Innovate 2025: Save the Date

 SAS Innovate 2025 is scheduled for May 6-9 in Orlando, FL. Sign up to be first to learn about the agenda and registration!

Save the date!

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.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

Discussion stats
  • 1 reply
  • 591 views
  • 1 like
  • 2 in conversation