BookmarkSubscribeRSS Feed
Lapis Lazuli | Level 10 tc
Lapis Lazuli | Level 10



Have a great 4th of July  weekend, all!


* Fun w/SAS ODS Graphics, 4th of July Stars-and-Stripes BBQ Grill;

data stars(keep=x y);                            /* Generate x/y points for white stars on blue background */
do y=-1.25 to 1.25 by .1; do x=-1.25 to 1.25 by .1; output; end; end;                                                                              

data top(keep=tp tx ty);                         /* Generate x/y points for top half of grill (blue) */
tp=1;                                            /* Polygon semi-circle points */
tx=-.95; ty=sqrt(1-tx**2); output;               /* Starting point - only .95 wide instead of 1 to leave room for text */                 
do tx=-.95 to .95 by .01; ty=sqrt(1-tx**2); output; end; /* points of semicircle */
tx=.95; ty=sqrt(1-tx**2); output;                /* End point */  
tx=-.95; ty=sqrt(1-tx**2); output;               /* Starting point - only .95 wide instead of 1 to leave room for text */                 

proc sql;                                        /* x/y points for bottom of grill (red) same as top, just negate y */
create table bottom as select tp as bp, tx as bx, -ty as by from top order by 2;
update top set ty=ty+.2;                         /* Adjust y-position of top/bottom up for text & legs */  
update bottom set by=by+.5;

data stripes(keep=sp sx sy);                     /* Generate x/y points for white stripes on red background */
sp=1; do y=.5 to -1.5 by -.2; sx=-1.2; sy=y; output; sx=1.2; output; sy+(-.1); output; sx=-1.2; output; end;  

data text;                                       /* Text to display in middle of grill */
txtx=0; txty=.35; txt="HAPPY 4TH OF JULY!"; 

data legs(keep=lx1 ly1 lx2 ly2);                 /* Generate pairs of x/y points for grill legs (red) */
lx1=-.3; ly1=-.425; lx2=-.7; ly2=-1.35; output;   /* Left leg */
lx1=.3; ly1=-.425; lx2=.7; ly2=-1.35; output;     /* Right leg */ 

data grillpoints;                                /* Merge all the points together */
set stars top bottom stripes text legs;
                                                 /* Let's plot a grill! (Polygon+Scatter+Series+Text+Vector Plots) */
ods graphics / antialias border height=5in width=5in;
proc sgplot data=grillpoints noautolegend noborder pad=0 nowall subpixel; 
symbolchar name=uniStar char='2605'x;            /* Unicode value for 5-pointed star */
inset "(*ESC*){unicode '03c0'x}" / noborder position=top textattrs=(size=30pt weight=bold color=CX3C3B6E); /* Use unicode PI symbol for "handle" */
polygon x=tx y=ty  id=tp / fill lineattrs=(color=CX3C3B6E)  fillattrs=(color=CX3C3B6E); /* Top of grill filled (blue) */                    
scatter x=x y=y / markerattrs=(symbol=unistar color=CXFFFFFF size=22pt); /* Stars (white) */    
series x=tx y=ty / lineattrs=(color=CX3C3B6E thickness=2pt); /* Top of grill outline (blue) */                      
polygon x=bx y=by id=bp / fill lineattrs=(color=CXB22234)  fillattrs=(color=CXB22234); /* Bottom of grill filled (red) */                    
polygon x=sx y=sy id=sp / fill lineattrs=(color=white)  fillattrs=(color=white); /* Stripes (white) */
series x=bx y=by / lineattrs=(color=CXB22234 thickness=2pt); /* Bottom of grill outline (red) */
text x=txtx y=txty text=txt / textattrs=(size=19pt weight=bold color=black); /* Happy 4th of July! text (black) */
vector x=lx1 y=ly1 / xorigin=lx2 yorigin=ly2 noarrowheads lineattrs=(color=CXB22234 thickness=9pt); /* Grill legs (red) */
xaxis display=none offsetmin=.1 offsetmax=.1 values=(-1.2 1.2);  /* Suppress axes display */ 
yaxis display=none offsetmin=.1 offsetmax=.1 values=(-1.2 1.2);




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. 

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.

Get the $99 certification deal.jpg



Back in the Classroom!

Select SAS Training centers are offering in-person courses. View upcoming courses for:

View all other training opportunities.

Discussion stats
  • 0 replies
  • 1 in conversation