BookmarkSubscribeRSS Feed
🔒 This topic is solved and locked. Need further help from the community? Please sign in and ask a new question.
PaalNavestad
Pyrite | Level 9

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

FactorpltPNG.PNG

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

https://blogs.sas.com/content/graphicallyspeaking/2012/02/27/roses-are-red-violets-are-blue/

 

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;
1 ACCEPTED SOLUTION

Accepted Solutions
Cynthia_sas
SAS Super FREQ
Hi:
Why do you have symbol=circlefilled in your SCATTER statement? I suggest you just keep size=10px in your SCATTER statement for MARKERATTRS and allow the attribute map to be in control.

Cynthia

View solution in original post

6 REPLIES 6
Cynthia_sas
SAS Super FREQ
Hi:
Why do you have symbol=circlefilled in your SCATTER statement? I suggest you just keep size=10px in your SCATTER statement for MARKERATTRS and allow the attribute map to be in control.

Cynthia
WarrenKuhfeld
Ammonite | Level 13

Also, be sure to use attrpriority=none when you want different markers (particularly when using an attrpriority=color style like htmlblue).

PaalNavestad
Pyrite | Level 9

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.

ballardw
Super User

@PaalNavestad wrote:

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.

 

PaalNavestad
Pyrite | Level 9

Thanks ballardw. You are completly right. Just old bad habits I think in adding all in one line.

 

 

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
  • 6 replies
  • 2143 views
  • 1 like
  • 4 in conversation