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

Hi All,

 

I'm trying to use Attrmap and a proc format but they seem to cancel each other over.

 

If I run the code without the format Simplification typeFmt. I get the green from the Attrmap - as expected -  and legend = 0 (pic 1).

 

If I run with format Simplification typeFmt. I loose the formatting from Attrmap and the legend   = Pre trial (pic2) 

 

Is there a way I can have both  - Attrmap and the proc format work together. Green columns from the Attrmap and a legend shows Pre trial and Post Trial. 

 

 

Data Attrmap;
	Retain id "myid";
	input value $ fillcolor $8.;
	datalines;
	0 VIBG
	1 BIBG
	;
run;

proc format;
	value typeFmt
		0 = "Pre Trial"
		1 = "Post Trial" 
	;
	ods graphics on / width=9in height=5in;

Proc SGPLOT data=work.DSCMax noborder dattrmap=attrmap;
	*/
	format Simplification typeFmt.;
	VBAR EVENT_DT / Response=Max_answer_tm Group=Simplification attrid=myid nooutline seglabel seglabelattrs=(weight=Bold color=WHITE size=8 );
	yaxis display=(noline noticks) grid values=(0 to 3600 by 300) offsetmin=0 label='mm:ss';
RUN;

ODS graphics OFF;

 

Apologies if the test data doesn't run - this is what it looks like though

data test;
	Input CD EVENT_DT Group Simplification MAX_ANSWER_TM;
	Datalines;
TSDa 	2018-07-06	DSC	0	38:21
TSDa	2018-07-09	DSC	0	9:41
TSDa	2018-07-10	DSC	0	23:31
TSDa	2018-07-11	DSC	0	14:47
TSDa	2018-07-12	DSC	0	17:40
TSDa	2018-07-13	DSC	0	20:34
TSDa	2018-07-16	DSC	0	8:55
TSDa	2018-07-17	DSC	0	22:17
TSDa	2018-07-18	DSC	0	16:42
TSDa	2018-07-19	DSC	0	10:31
TSDa	2018-07-20	DSC	0	11:12
TSDa	2018-07-23	DSC	0	10:13
TSDa	2018-07-24	DSC	0	6:37
TSDa	2018-07-25	DSC	0	17:00
TSDa	2018-07-26	DSC	0	7:11
TSDa	2018-07-27	DSC	0	10:43
;
RUN;

Pic 1                                                                                                 Pic 2

Capture1.JPGCapture2.JPG

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1 ACCEPTED SOLUTION

Accepted Solutions
FreelanceReinh
Jade | Level 19

Hi @DME790,

 

According to the documentation: "If the group value is formatted, then the text-string in the attribute map data set must contain the formatted value."

 

So, just modify variable VALUE in dataset ATTRMAP:

data test;
input cd $ event_dt :yymmdd. group $ Simplification max_answer_tm :time.;
max_answer_tm=max_answer_tm/60;
format event_dt yymmdd10. max_answer_tm mmss.;
label event_dt='Event Date';
datalines;
TSDa 2018-07-06 DSC 0 38:21
TSDa 2018-07-09 DSC 0 9:41
TSDa 2018-07-10 DSC 0 23:31
TSDa 2018-07-11 DSC 0 14:47
TSDa 2018-07-12 DSC 0 17:40
TSDa 2018-07-13 DSC 0 20:34
TSDa 2018-07-16 DSC 0 8:55
TSDa 2018-07-17 DSC 0 22:17
TSDa 2018-07-18 DSC 0 16:42
TSDa 2018-07-19 DSC 0 10:31
TSDa 2018-07-20 DSC 0 11:12
TSDa 2018-07-23 DSC 0 10:13
TSDa 2018-07-24 DSC 0 6:37
TSDa 2018-07-25 DSC 0 17:00
TSDa 2018-07-26 DSC 0 7:11
TSDa 2018-07-27 DSC 0 10:43
TSDa 2018-07-27 DSC 1 -0:01
; /* last obs. added to force "Post Trial" into the legend */

data attrmap;
retain id "myid";
input value :&$10. fillcolor $8.;
datalines;
Pre Trial   VIBG
Post Trial  BIBG
;

ods graphics on / width=9in height=5in;

proc sgplot data=test noborder dattrmap=attrmap;
format Simplification typeFmt.;
vbar event_dt / response=max_answer_tm group=Simplification attrid=myid nooutline seglabel seglabelattrs=(weight=bold color=white size=8 );
yaxis display=(noline noticks) grid values=(0 to 3600 by 300) offsetmin=0 label='mm:ss';
run;

ods graphics off;

If you don't need "Post Trial" in the legend if only "Pre Trial" values occur in the graph, just delete the dummy observation that I've added.

View solution in original post

2 REPLIES 2
FreelanceReinh
Jade | Level 19

Hi @DME790,

 

According to the documentation: "If the group value is formatted, then the text-string in the attribute map data set must contain the formatted value."

 

So, just modify variable VALUE in dataset ATTRMAP:

data test;
input cd $ event_dt :yymmdd. group $ Simplification max_answer_tm :time.;
max_answer_tm=max_answer_tm/60;
format event_dt yymmdd10. max_answer_tm mmss.;
label event_dt='Event Date';
datalines;
TSDa 2018-07-06 DSC 0 38:21
TSDa 2018-07-09 DSC 0 9:41
TSDa 2018-07-10 DSC 0 23:31
TSDa 2018-07-11 DSC 0 14:47
TSDa 2018-07-12 DSC 0 17:40
TSDa 2018-07-13 DSC 0 20:34
TSDa 2018-07-16 DSC 0 8:55
TSDa 2018-07-17 DSC 0 22:17
TSDa 2018-07-18 DSC 0 16:42
TSDa 2018-07-19 DSC 0 10:31
TSDa 2018-07-20 DSC 0 11:12
TSDa 2018-07-23 DSC 0 10:13
TSDa 2018-07-24 DSC 0 6:37
TSDa 2018-07-25 DSC 0 17:00
TSDa 2018-07-26 DSC 0 7:11
TSDa 2018-07-27 DSC 0 10:43
TSDa 2018-07-27 DSC 1 -0:01
; /* last obs. added to force "Post Trial" into the legend */

data attrmap;
retain id "myid";
input value :&$10. fillcolor $8.;
datalines;
Pre Trial   VIBG
Post Trial  BIBG
;

ods graphics on / width=9in height=5in;

proc sgplot data=test noborder dattrmap=attrmap;
format Simplification typeFmt.;
vbar event_dt / response=max_answer_tm group=Simplification attrid=myid nooutline seglabel seglabelattrs=(weight=bold color=white size=8 );
yaxis display=(noline noticks) grid values=(0 to 3600 by 300) offsetmin=0 label='mm:ss';
run;

ods graphics off;

If you don't need "Post Trial" in the legend if only "Pre Trial" values occur in the graph, just delete the dummy observation that I've added.

DME790
Pyrite | Level 9

Thanks @FreelanceReinh

 

Works a treat

 

Cheers

 

Dean

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
  • 2 replies
  • 2204 views
  • 1 like
  • 2 in conversation