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

fourthofjulygrill.png

 

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);
run;

 

SAS Innovate 2025: Call for Content

Are you ready for the spotlight? We're accepting content ideas for SAS Innovate 2025 to be held May 6-9 in Orlando, FL. The call is open until September 25. Read more here about why you should contribute and what is in it for you!

Submit your idea!

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.

Click image to register for webinarClick image to register for webinar

Classroom Training Available!

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

View all other training opportunities.

Discussion stats
  • 0 replies
  • 598 views
  • 4 likes
  • 1 in conversation