Data visualization with SAS programming

Integration of style element to GTL

Accepted Solution Solved
Reply
Super Contributor
Posts: 266
Accepted Solution

Integration of style element to GTL

[ Edited ]

Looking at the ocean of GTL, I am perplexed. I wonder if  there is a way STYLE template  can be integrated to GTL component or they act independently to achieve similar thing?

 

Here is an example to manipualte graph walls ( define style vs GTL).

 

/* style */

proc template ;
 define style axis_wall;
 parent=styles.listing;
 style graphwalls from graphwalls /
   frameborder=on
   linestyle=1
   linethickness=2px
   backgroundcolor=GraphColors("gwalls")
   contrastcolor= orange;
 style graphaxislines from graphaxislines /
   linestyle=1
   linethickness=2px
   contrastcolor=blue;
 end;	
run; 

ods listing style=axis_wall ;

/* GTL */

layout overlay / walldisplay=(fill);

 


Accepted Solutions
Solution
‎04-05-2016 01:50 PM
SAS Super FREQ
Posts: 1,134

Re: Integration of style element to GTL

A simpler example is easier to understand.  This works.

 

proc template;
  define Style myStyle;
  parent = styles.htmlBlue;
  CLASS graphdata1 /
    contrastColor=gold
    color=gold; 
  CLASS graphdata2 /
    contrastcolor=silver
    color=silver; 
  end;
run;

 

ods html style=mystyle;
proc sgplot data=sashelp.cars;
vbar type / group=type response=mpg_city stat=mean;
run;

 

Style.png

View solution in original post


All Replies
Super Contributor
Posts: 266

Re: Integration of style element to GTL

This paper  (http://www.mwsug.org/proceedings/2013/HW/MWSUG-2013-HW05.pdf ) answers my question where style template has been created to override the default style. But when I make some changes in the style template, I can not see the effect in graph.

data heartSysDat;
	length BMI_MPDesc $12;
	length CHD_GrpDesc $6;
	length grpFreq $5;
	input BMI_MPDesc CHD_GrpDesc & GrpFreq YforN meanRvar_Sys lclm uclm;
	cards;
 Underweight No CHD     72  -5  124.42  119.00  129.83
 Underweight CHD         7  -5  122.86  91.10   154.62
 Normal      No CHD  1,905  -5  128.56  127.58  129.54
 Normal      CHD       551  -5  137.37  135.17  139.58
 Overweight  No CHD  1,357  -5  137.46  136.12  138.81
 Overweight  CHD       613  -5  144.71  142.55  146.86
 Obese       No CHD    419  -5  149.22  146.50  151.93
 Obese       CHD       275  -5  158.93  154.62  163.25
 run;
 /* STYLE TEMPLATE */
 proc template;
	define Style myStyle;
		parent = styles.default;
		CLASS GraphFonts
			"Fonts used in graph styles" /
			'GraphTitleFont' = (", ",12pt,bold)
			'GraphLabelFont' = (", ",11pt)
			'GraphValueFont' = (", ",11pt);
		CLASS graphBorderLines /
			linethickness = 0px;
		CLASS graphdata1 /
			contrastColor=black
			color=cx8CaEdF; /* No CHD -- LIGHT BLUE */
		CLASS graphdata2 /
		contrastcolor=black
		color=cx42659C; /* With CHD -- DARKER BLUE */
		CLASS graphAxisLines /
		contrastcolor=black;
		CLASS graphwalls /
			contrastcolor=black;
	end;
run;

ods listing style=myStyle image_dpi=300;

/* STATGRAPH TEMPLATE */
proc template;
	define statgraph myBChart;
		begingraph;
			entrytitle "CHD Status Related to Systolic Blood Pressure and BMI for SASHELP.Heart";
			entrytitle "Systolic BP Averages and Confidence Limits are Reported by BMI Category"
				/ textattrs=(size=11pt);
			layout overlay / xaxisopts=( label="Body Mass Index Category"
				labelAttrs=(weight=bold))
				yaxisopts=( label="Mean Systolic BP with 95CLM Half E-Bars"


				labelattrs=(weight=bold)
				offsetmin=0.02 offsetmax=0.1);

				/* FOR FILLED BARS IN THE BAR CHART */
				barchart X=BMI_MPDesc Y=MeanRvar_Sys / stat=sum BarLabel=FALSE
					group=CHD_GrpDesc name="barGroup"
					groupdisplay=cluster dataskin=pressed
					display=(fill)
					barwidth=0.9 fillattrs=(transparency=0.3);

				/* FOR BAR OUTLINES*/
				barchart X=BMI_MPDesc Y=MeanRvar_Sys / stat=sum BarLabel=FALSE
					group=CHD_GrpDesc
					groupdisplay=CLUSTER
					display=(OUTLINE)
					outlineattrs=(color=BLACK thickness=1PX)
					barwidth=0.9;
				discreteLegend "barGroup" / across=2 autoalign=(TOPLEFT) titleattrs=(size=10PT)
					valueattrs=(size=9PT)
					border=FALSE location=INSIDE
					title="Chronic Heart Disease Status:";

				/* OUTSIDE LABELS ARE MOVED INSIDE */
				scatterplot X=BMI_MPDesc Y=EVAL(MeanRvar_Sys - 6)/
					markercharacterattrs=(size=9PT color=BLACK)
					markercharacter=MeanRvar_Sys
					group=CHD_GrpDesc groupdisplay=CLUSTER
					clusterwidth=0.85;

				/* ERRORBAR: WHY IS SIZE=0? */
				scatterplot X=BMI_MPDesc Y=MeanRvar_Sys / markerattrs=(size=0)
					errorbarattrs=(thickness=1)
					yerrorlower=meanRvar_Sys yerrorupper=uclm
					group=CHD_GrpDesc groupdisplay=CLUSTER
					clusterwidth=0.85;

				/* *****
				DRAW THE LETTER 'N' WITH DRAWTEXT, AN ANNOTATE STATEMENT IN GTL.
				XSPACE IS SET TO WALLPERCENT IN DRAWTEXT, SINCE THE X-AXIS IS DISCRETE.
				THE X-COORD HERE IS 2% TO THE RIGHT OF THE WALL. (IT COULD BE 2.0791 - A REAL NUMBER).
				YSPACE IS SET TO DATAVALUE, BECAUSE THE Y AXIS IS LINEAR AND CAN SUPPORT FRACTIONS.
				***** */
				drawtext textattrs=(size=9pt style=ITALIC weight=BOLD) "n:" /
					width=5 widthunit=PERCENT
					xspace=WALLPERCENT yspace=DATAVALUE
					x=2 y=-4.5 justify=CENTER;

				/* ****
				PLOT ALL THE VALUES FOR 'N' WITH A SCATTERPLOT STATEMENT.
				TO GET COMMA FORMATTED OUTPUT FOR GRPFREQ, YOU MUST FORMAT AT THE DATA STEP LEVEL.
				(SEE PAPER). THE TRICK FOR THIS SCATTERPLOT CONCERNS THE Y PARAMETER WHERE Y=YFORN=-5.
				POINTS WITH VALUES EQUAL TO MINUS 5 BECOME VISIBLE BY EXTENDING OFFSET MIN FROM
				0 TO 0.02. IN OTHER WORDS, DATA CAN BE PLOTTED BY VALUE IN THE OFFSET REGION.
				***** */
				scatterplot y=YforN x=BMI_MPDesc /
					markercharacterattrs=(size=9PT color=BLACK)
					markercharacter=GRPFreq
					group=CHD_GrpDesc groupdisplay=CLUSTER
					clusterwidth=0.85;

				/* *****
				DRAWRECTANGLE PLACES AN OUTLINE AROUND THE COLOR SAMPLES IN THE LEGEND.
				WHY WOULD ANYONE DO THIS?
				THE ANCHOR=OPTION PLAYS AN IMPORTANT ROLE. WHAT IS IT? (SEE MANUAL)
				***** */
				drawrectangle x=40 y=94.25 width=5.6 height=3.5 /
					anchor=BOTTOMLEFT drawspace=WALLPERCENT
					display=(OUTLINE) outlineattrs=(color=BLACK thickness=1PX);
				drawrectangle x=57.5 y=94.25 width=5.6 height=3.5 /
					anchor=BOTTOMLEFT drawspace=WALLPERCENT
					display=(OUTLINE) outlineattrs=(color=BLACK thickness=1PX);
			endlayout;
		endgraph;
	end;
run;

proc sgrender data=work.heartSysDat template=myBchart;
 run;
quit;
Super User
Posts: 11,101

Re: Integration of style element to GTL

 

What specifically were you expecting to see change appearance in your myBarchart?

Have tried the HTML destination instead of Listing?

 

 

Super Contributor
Posts: 266

Re: Integration of style element to GTL

@ballardw I want to change the color graph.  I will try it in html.  Thanks !

Solution
‎04-05-2016 01:50 PM
SAS Super FREQ
Posts: 1,134

Re: Integration of style element to GTL

A simpler example is easier to understand.  This works.

 

proc template;
  define Style myStyle;
  parent = styles.htmlBlue;
  CLASS graphdata1 /
    contrastColor=gold
    color=gold; 
  CLASS graphdata2 /
    contrastcolor=silver
    color=silver; 
  end;
run;

 

ods html style=mystyle;
proc sgplot data=sashelp.cars;
vbar type / group=type response=mpg_city stat=mean;
run;

 

Style.png

☑ This topic is solved.

Need further help from the community? Please ask a new question.

Discussion stats
  • 4 replies
  • 431 views
  • 0 likes
  • 3 in conversation