I'm trying to implement the solution given in the forum post Proc sgplot: plotting different colors and markers for several groups in a scatter plot, but my plot markers are not changing with group. Here's my code:
* Create attribute map; data plotattrs; retain id "myid"; length value 3.0 markercolor $ 6 markersymbol $ 6; input value markercolor $ markersymbol $; datalines; 1 red plus 2 green x ; run; * Plot data; proc sgplot data = sashelp.iris dattrmap = plotattrs; scatter x = petallength y = petalwidth / group = species attrid = myid; run;
The plot that is generated represents group by color, but not by marker type:
How can I make the plot marker type vary with group like the marker color does?
The value has to match the value of the group variable.
Try
data plotattrs; retain id "myid"; length value $ 10 markercolor $ 6 markersymbol $ 6; input value markercolor $ markersymbol $; datalines; Setosa red plus Versicolor2 green x Virginica blue diamond ; run; * Plot data; proc sgplot data = sashelp.iris dattrmap = plotattrs; scatter x = petallength y = petalwidth / group = species attrid = myid; run;
The value has to match the value of the group variable.
Try
data plotattrs; retain id "myid"; length value $ 10 markercolor $ 6 markersymbol $ 6; input value markercolor $ markersymbol $; datalines; Setosa red plus Versicolor2 green x Virginica blue diamond ; run; * Plot data; proc sgplot data = sashelp.iris dattrmap = plotattrs; scatter x = petallength y = petalwidth / group = species attrid = myid; run;
Thank you-- I knew I was missing something basic.
You may also want to consider using longer text fields by default for you options just so you don't do what I did and tryto stuff "diamond" into a 6 character field.
ods graphics / attrpriority=none;
proc sgplot data = sashelp.iris;
styleattrs datacolors=(red yellow blue) ;
scatter x = petallength y = petalwidth /
jitter group = species;
run;
Thanks for this, Ksharp. I wasn't aware of the "styleattrs" statement in proc sgplot.
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 16. Read more here about why you should contribute and what is in it for you!
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.