Data visualization with SAS programming

Define color markers in proc sgscatter by groups

Accepted Solution Solved
Reply
New Contributor
Posts: 2
Accepted Solution

Define color markers in proc sgscatter by groups

 

%macro scatter (x,y, xlabel, ylabel, pearson, pval);

ods html gpath = '...';
ods graphics / reset = all width = 12in height = 6in border = off
imagename = "Scatter_&x-&y" imagefmt = png ;

proc sgscatter data = data_2015;
plot &x*&y /  filledoutlinedmarkers group = type 

markerfillattrs = (color = CX62C0FF) 
markeroutlineattrs = (color = CX265C7F  thickness = 1)
markerattrs = (symbol = circlefilled size = 15 )

/* Here i want to include two more colors */ ; title "Pearson = &pearson P-Value = &pval"; label &x = "&xlabel" &y = "&ylabel"; run;

Hi everyone, 

 

I am trying to specify 3 different markers colors in a gscatter procedure according to a categorical variable "type" (assuming 3 values) specified in the group option. How can I use the filledoutlinedmarkers option for grouped variables in the same scatterplot?

 

Thanks in advance


Accepted Solutions
Solution
‎10-25-2016 10:21 AM
SAS Super FREQ
Posts: 864

Re: Define color markers in proc sgscatter by groups

There are two way to do this. One way is to just override the style colors using the DATACOLORS and DATACONTRASTCOLORS option:

 

proc sgscatter data=sashelp.class datacolors=(lightblue pink) datacontrastcolors=(blue maroon);
plot weight*height / group=sex filledoutlinedmarkers
markerattrs=(symbol=circlefilled size=10);
run;

You can also use a discrete attributes map to associate the colors to the correct group values so that you are not dependent on data order:

 

data markermap;
retain id "myid";
length fillcolor $ 9 markercolor $ 6;
input value $ fillcolor $ markercolor $;
cards;
F pink      maroon
M lightblue blue
;
run;

proc sgscatter data=sashelp.class dattrmap=markermap;
plot weight*height / group=sex attrid=myid filledoutlinedmarkers
markerattrs=(symbol=circlefilled);
run;

Hope this helps!

Dan

View solution in original post


All Replies
Solution
‎10-25-2016 10:21 AM
SAS Super FREQ
Posts: 864

Re: Define color markers in proc sgscatter by groups

There are two way to do this. One way is to just override the style colors using the DATACOLORS and DATACONTRASTCOLORS option:

 

proc sgscatter data=sashelp.class datacolors=(lightblue pink) datacontrastcolors=(blue maroon);
plot weight*height / group=sex filledoutlinedmarkers
markerattrs=(symbol=circlefilled size=10);
run;

You can also use a discrete attributes map to associate the colors to the correct group values so that you are not dependent on data order:

 

data markermap;
retain id "myid";
length fillcolor $ 9 markercolor $ 6;
input value $ fillcolor $ markercolor $;
cards;
F pink      maroon
M lightblue blue
;
run;

proc sgscatter data=sashelp.class dattrmap=markermap;
plot weight*height / group=sex attrid=myid filledoutlinedmarkers
markerattrs=(symbol=circlefilled);
run;

Hope this helps!

Dan

New Contributor
Posts: 2

Re: Define color markers in proc sgscatter by groups

Thank you! Both solutions work fine
Post a Question
Discussion Stats
  • 2 replies
  • 159 views
  • 0 likes
  • 2 in conversation