I have a challenge in getting attribute maps to relate to markers symbols.
In the following graph I want different symbols for the group variables
I have an attribute set that contain the group as value, ID and Markercolor, linecolor and Marker symbol.
I've been using this blog as an example
However I do not get the markersymbol to work in the program below. If anybody can spot my mistake or another reason why this does not work I would be gratefull. I need to use an attribute map as I want the colors and symbols to be consitent with different subset of the lithography. There are no warnings in the log.
data WORK.PLOT; infile datalines dsd truncover; input New_name:$28. Factor2:32. Factor1:32. Variable:$5.; datalines4; CLAYSTONE,-0.185413784,0.8765300403,DEN CLAYSTONE,0.0802383641,-0.942423341,DT CLAYSTONE,0.0894057721,-0.914880023,DTS CLAYSTONE,-0.136821684,0.8858383038,MD CLAYSTONE,0.499795716,0.5467842298,rdep2 CLAYSTONE,0.8796590392,0.1908197143,RMED SANDSTONE,-0.073826801,-0.810730681,DEN SANDSTONE,0.0054279929,0.9557568336,DT SANDSTONE,-0.008915198,0.9355992025,DTS SANDSTONE,0.0206300191,-0.860819962,MD SANDSTONE,0.7554762984,-0.022696386,rdep2 SANDSTONE,0.7646326321,-0.028504051,RMED SANDY CLAYSTONE,-0.534628033,0.5768449572,DEN SANDY CLAYSTONE,0.106994111,-0.886402929,DT SANDY CLAYSTONE,0.3631873579,-0.808710324,DTS SANDY CLAYSTONE,-0.908688287,0.1857373082,MD SANDY CLAYSTONE,0.5436369576,0.7820378251,rdep2 SANDY CLAYSTONE,0.5483943704,0.8034061258,RMED SILTY SANDSTONE,-0.053856972,0.8735052089,DEN SILTY SANDSTONE,0.0412853994,-0.968138473,DT SILTY SANDSTONE,0.0332220091,-0.956833223,DTS SILTY SANDSTONE,-0.040747162,0.9220015982,MD SILTY SANDSTONE,0.9423890513,0.0879985013,rdep2 SILTY SANDSTONE,0.9433741015,0.0778507436,RMED ;;;; data LITH_ATTRIBUTES; infile datalines dsd truncover; input ID:$4. value:$28. Markercolor:$18. Linecolor:$18. Markersymbol:$25.; datalines4; lith,ANHYDRITE,BRPK,BRPK,Triangle lith,CLAYSTONE,aquamarine,aquamarine,Diamondfilled lith,COAL,DABGR,DABGR,Plus lith,CONGLOMERATE,DarkGreen,DarkGreen,TriangleDownfilled lith,CONGLOMERATE MUDDY SANDSTONE,DarkGreen,DarkGreen,CircleFilled lith,DOLOMITIC LIMESTONE,BIO,BIO,HomeDownFilled lith,HALITE,Beige,Beige,SquareFilled lith,INTRUSIVE ROCK,VIV,VIV,TriangleLeftFilled lith,LIMESTONE,BIPB,BIPB,TriangleFilled lith,MARL,deepskyblue,deepskyblue,CircleFilled lith,METAMORPHIC ROCKS,BIP,BIP,TriangleRightFilled lith,MUDDY SANDSTONE,Brown,Brown,TriangleLeft lith,SANDSTONE,chocolate,chocolate,CircleFilled lith,SANDY CLAYSTONE,burlywood,burlywood,TriangleDownFilled lith,SHALE,Olive,Olive,SquareFilled lith,SILTSTONE,BRO,BRO,DiamondFilled lith,SILTY CLAYSTONE,gold,gold,Starfilled lith,SILTY SANDSTONE,BIGB,BIGB,Hash lith,SILTY SHALE,blanchedalmond,blanchedalmond,Star lith,UNKNOWN,salmon,salmon,TriangleRight lith,VOLCANIC CLASTICS,crimson,crimson,IBeam ;;;; ods graphics on / imagemap; proc sgplot data=plot aspect=1 dattrmap=Lith_attributes; scatter x=Factor1 y=Factor2/ group=New_name markerattrs=(symbol=circlefilled size=10 px) datalabel=variable attrid=lith; refline 0 / axis=x; refline 0 / axis=y; xaxis min=-1 max=1; yaxis min=-1 max=1; run;
Thanks a million. Three poeple here have looked at this and not seen the symbol=circlefilled. Removing and everything worked.
The reason it was there was form the first version before we decided we needed more symbols.
I find it easier to debug graphic problems when one option is on one line such as:
proc sgplot data=plot aspect=1 dattrmap=Lith_attributes; scatter x=Factor1 y=Factor2/ group=New_name markerattrs=(symbol=circlefilled size=10 px) datalabel=variable attrid=lith ; refline 0 / axis=x; refline 0 / axis=y; xaxis min=-1 max=1; yaxis min=-1 max=1; run;
Long lines of code may tend to obfuscate an option that doesn't appear in a "normal" length statement. Since there may be many graphic options on a single plot statement this is a tad easier to read. Also commenting out one option is easier.
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.