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

I have a finicky problem with laying out labels in a GTL datalattice.

 

This almost does what I want, with one problem: the sidebar 'Cat 1 Description' (which describes the rowheaders) should be to the left of the rowheaders 'Type A' and 'Type B', and I can't figure out how to get it there.

 

proc template;
define statgraph test;
	begingraph;
		layout datalattice rowvar=cat1 /
			row2axisopts=(label='Cat 2 Description')
			headerlabeldisplay=value headerlabellocation=outside rowheaders=left;
			sidebar / align=left;
				entry 'Cat 1 Description' / rotate=90;
			endsidebar;
			layout prototype;
				barchart x=cat2 y=pct_row /
					orient=horizontal yaxis=y2;
			endlayout;
		endlayout;
	endgraph;
end;

graph.png

This is the vertical bar equivalent, which is laid out just how I like it:

 

proc template;
define statgraph test;
	begingraph;
		layout datalattice columnvar=cat1 /
			columnaxisopts=(label='Cat 2 Description')
			headerlabeldisplay=value headerlabellocation=inside columnheaders=top;
			    sidebar / align=top;
					entry 'Cat 1 Description';
				endsidebar;
				layout prototype;
					barchart x=cat2 y=pct_row /
						orient=vertical;
				endlayout;
		endlayout;
	endgraph;
end;

Things I've tried that didn't work: headerlabellocation=inside (changes the row headers to be horizontal text at the top of the cell, at least in SAS 9.3); adding a cell with the row label text within a gridded layout (too much whitespace).

1 ACCEPTED SOLUTION

Accepted Solutions
Jay54
Meteorite | Level 14

Sometimes an inline annotation (DRAWTEXT) is what you need.

 

proc template;
  define statgraph test;
    begingraph;
      layout datalattice rowvar=cat1 / pad=(left=5pct)
                                 row2axisopts=(label='Cat 2 Description')
                                headerlabeldisplay=value headerlabellocation=outside rowheaders=left;
       drawtext "Cat 1 Description" / x=0 y=55 anchor=top rotate=90 width=50 drawspace=layoutpercent;

       layout prototype;
         barchart x=cat2 y=pct_row / orient=horizontal yaxis=y2;
      endlayout;
    endlayout;
  endgraph;
end;

 

data bar;
format pct_row percent.;
input cat1 $ cat2 $ pct_row;
datalines;
TypeA TypeA 0.55
TypeA TypeB 0.55
TypeB TypeA 0.55
TypeB TypeB 0.60
;
run;

proc sgrender data=bar template=test;
run;

 

DataLattice.png

View solution in original post

2 REPLIES 2
Jay54
Meteorite | Level 14

Sometimes an inline annotation (DRAWTEXT) is what you need.

 

proc template;
  define statgraph test;
    begingraph;
      layout datalattice rowvar=cat1 / pad=(left=5pct)
                                 row2axisopts=(label='Cat 2 Description')
                                headerlabeldisplay=value headerlabellocation=outside rowheaders=left;
       drawtext "Cat 1 Description" / x=0 y=55 anchor=top rotate=90 width=50 drawspace=layoutpercent;

       layout prototype;
         barchart x=cat2 y=pct_row / orient=horizontal yaxis=y2;
      endlayout;
    endlayout;
  endgraph;
end;

 

data bar;
format pct_row percent.;
input cat1 $ cat2 $ pct_row;
datalines;
TypeA TypeA 0.55
TypeA TypeB 0.55
TypeB TypeA 0.55
TypeB TypeB 0.60
;
run;

proc sgrender data=bar template=test;
run;

 

DataLattice.png

mbg
Calcite | Level 5 mbg
Calcite | Level 5

Thanks Sanjay, that does the trick.

 

DRAWTEXT was indeed the missing link. I was trying to do it using ENTRY and not getting anywhere.

sas-innovate-wordmark-2025-midnight.png

Register Today!

Join us for SAS Innovate 2025, our biggest and most exciting global event of the year, in Orlando, FL, from May 6-9. Sign up by March 14 for just $795.


Register now!

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
  • 1727 views
  • 0 likes
  • 2 in conversation