Lapis Lazuli | Level 10

## Fun With SAS ODS Graphics: Para-boo!-la Halloween Card

SAS ODS Graphics Craft Project (Source: itsmejd.com)

With the Halloween weekend upon us, here's a SAS ODS Graphics Polygon + Bubble + Text + Lineparm + Ellipseparm plot take on a DIY Halloween Card craft project from the it's me,JD blog (parabola math refresher here). Happy Halloween, all!

`````` * Fun With SAS ODS Graphics: Para-boo!-la Halloween Card
SAS ODS Graphics take on craft project at itsmejd.com/easy-diy-halloween-cards-make-minimal-supplies/;

data paraBOOla;                                                      * Generate x-y point coordinates, text for charts;
retain id 1;                                                         * Polygons require ID #;
/*Polygon*/ do x=-3.3 to 3.3 by .1; y=x**2/-4*2.5+1.95; output; end; * Parabola formula used to draw top of 'ghost';
y=-6; output; x=-3.3; output;                            * Close off polygon with rectangular bottom of 'ghost';
/*Eyes   */ x=.; x2=-0.75; y=-.25; size=.35; output; x2=.75; output; * Eyes of 'ghost';
/*Text1  */ x2=.; x3=0; y=-3.5; txt='boo!              '; output;    * Add some text to card;
/*Text2  */ x3=.; x4=2.9; y=-4.75; txt='HAPPY HALLOWEEN'; output;
/*Circles*/ x4=.; r=.6; do x5=-2.5 to 2.5 by 1; output; end;         * Circles (r=radius) used to draw bottom of 'ghost';

ods graphics / reset width=6in height=8in antialias ;
proc sgplot data=paraBOOla nowall pad=0 noautolegend subpixel;       * Let's make a Halloween card!;
styleattrs backcolor=cxFE9A0A;                                       * 'Halloween orange';
polygon x=x y=y id=id / fillattrs=(color=white) fill lineattrs=(color=white); * Parabola 'ghost';
text x=x3 y=y text=txt / backlight=1 textattrs=(color=white weight=bold size=90pt) contributeoffsets=none; * Boo! with backlight effect;
text x=x4 y=y text=txt / textattrs=(color=black weight=bold size=21pt) position=left contributeoffsets=none; * Happy Halloween;
lineparm x=-3.1 y=-5 slope=0 / lineattrs=(color=black thickness=3pt) clip; * Line separator;
ellipseparm semimajor=r semiminor=r / xorigin=x5 yorigin=-6.2 clip fillattrs=(color=cxFE9A0A) fill; * Circles at bottom of 'ghost' (cheesy drape effect!);
xaxis display=none values=(-3 3) offsetmin=0 offsetmax=0 thresholdmin=0 thresholdmax=0; * Limit x range to 'crop' ghost at sides;
yaxis display=none values=(-6 2.2) offsetmax=0;                      * Limit y-range;
run;``````

Para-boo!-la: First Draft