A quick SAS ODS Graphics take on a cute Easter Cards for Kids project. Happy Easter, all!
* Fun w/SAS ODS Graphics: Here Comes Polygons-and-Ellipses Peter Cottontail!
Inspired by cute card at iheartcraftythings.com/easter-cards-for-kids.html;
data bunny; * Generate polygons for bunny's body and teeth;
polygon=1; x=1; y=3; output; x=4; output; y=0; output; x=1; output; x=.; y=.; * Body;
polygon+1; xt=2; yt=1; output; xt=2.5; output; yt=.35; output; xt=2; output; * Left tooth;
polygon+1; xt=2.5; yt=1; output; xt=3; output; yt=.35; output; xt=2.5; output; * Right tooth;
ods graphics / reset height=5in width=5in antialias imagefmt=png;
proc template; * Draw bunny (polygon and ellipse plots);
define statgraph bunny;
begingraph / opaque=true border=false backgroundcolor=cxFDA3AC; * Rose backbround color;
layout overlayequated / opaque=true border=false backgroundcolor=cxFDA3AC wallcolor=cxFDA3AC WALLDISPLAY=(FILL)
xaxisopts=(display=none offsetmin=0.05 offsetmax=0.05)
yaxisopts=(display=none offsetmin=0.05 offsetmax=0.05);
entry "HAPPY EASTER!" / textattrs=(size=16pt color=white) valign=top; * Easter greetings;
ellipseparm xorigin=2 yorigin=3 semimajor=.45 semiminor=1.75 slope=.15 /
fillattrs=(color=cxE5E1D8) display=(fill); * Left outer ear (use slope to tilt);
ellipseparm xorigin=2 yorigin=3 semimajor=.25 semiminor=1.25 slope=.15 /
fillattrs=(color=cxFEE6E4) display=(fill); * Left inner ear;
ellipseparm xorigin=3 yorigin=3 semimajor=.45 semiminor=1.75 slope=-.15 /
fillattrs=(color=cxE5E1D8) display=(fill); * Right outer ear;
ellipseparm xorigin=3 yorigin=3 semimajor=.25 semiminor=1.25 slope=-.15 /
fillattrs=(color=cxFEE6E4) display=(fill); * Right inner ear);
polygonplot x=x y=y id=polygon / fillattrs=(color=cxE5E2D9) display=(fill);
ellipseparm xorigin=2 yorigin=2 semimajor=.4 semiminor=.4 slope=0 /
fillattrs=(color=white) display=(fill); * Left outer eye;
ellipseparm xorigin=2 yorigin=1.85 semimajor=.2 semiminor=.2 slope=0 /
fillattrs=(color=black) display=(fill); * Left inner eye;
ellipseparm xorigin=3 yorigin=2 semimajor=.4 semiminor=.4 slope=0 /
fillattrs=(color=white) display=(fill); * Right outer eye;
ellipseparm xorigin=3 yorigin=1.85 semimajor=.2 semiminor=.2 slope=0 /
fillattrs=(color=black) display=(fill); * Right inner eye;
polygonplot x=xt y=yt id=polygon / outlineattrs=(color=black thickness=1pt) fillattrs=(color=white) display=(fill outline); * Teeth;
ellipseparm xorigin=2.5 yorigin=1.1 semimajor=.8 semiminor=.4 slope=0 /
fillattrs=(color=cxFEE6E6) display=(fill); * Nose;
endlayout;
endGraph;
end;
proc sgrender data=bunny template=bunny; * Draw the chart!;
run;
1st Draft!
Thanks. These are always fun to see.
FYI - the last comment needs a semicolon in place of the colon.
Good catch!
Catch the best of SAS Innovate 2025 — anytime, anywhere. Stream powerful keynotes, real-world demos, and game-changing insights from the world’s leading data and AI minds.
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.
Ready to level-up your skills? Choose your own adventure.