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.
It's finally time to hack! Remember to visit the SAS Hacker's Hub regularly for news and updates.
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.
Ready to level-up your skills? Choose your own adventure.