<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Fun With SAS ODS Graphics: Pie Chart New Year's Eve Countdown Timer in Graphics Programming</title>
    <link>https://communities.sas.com/t5/Graphics-Programming/Fun-With-SAS-ODS-Graphics-Pie-Chart-New-Year-s-Eve-Countdown/m-p/708827#M20840</link>
    <description>&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Pie Chart New Year's Eve Countdown Timer" style="width: 480px;"&gt;&lt;img src="https://communities.sas.com/t5/image/serverpage/image-id/53126iBF999D0A46D9C325/image-size/large?v=v2&amp;amp;px=999" role="button" title="HappyNewYear.gif" alt="Pie Chart New Year's Eve Countdown Timer" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Pie Chart New Year's Eve Countdown Timer&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;A &lt;A href="https://lukashermann.dev/writing/why-the-iphone-timer-displays-fake-time/" target="_self"&gt;stopwatch-inspired&lt;/A&gt; SAS ODS Graphics pie chart New Year's Eve countdown timer. Happy New Year, all!&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;* Fun w/SAS ODS Graphics: Pie Chart New Year's Eve Countdown Timer;

proc format;                         * HH:SS stopwatch time format;
picture stopwatch low-high='99:99';
                                     * Generate data to plot;
data countdown;                      * Two observations every 10th of a second for pie chart wedges;
length text $ 20;                    * One obs with seconds elapsed, the other with seconds remaining; 
do frame=10 to -1.5 by -.1;          * 10 second countdown + 1.5 seconds extra for Happy New Year greeting;
  if frame&amp;gt;=0.01 then text=put(ceil(frame),stopwatch5.); else text="Happy New Year!";
  cat="Elapsed  "; secs=10-frame; if 0.01&amp;lt;secs then output; * Output elapsed + remaining time "wedges";
  cat="Remaining"; secs=frame;    if 0.01&amp;lt;secs then output; * Wedge values &amp;lt;=0 are a pie chart no-no!;
end;
           
proc template;                       * Template for New Years Eve countdown timer chart (pie chart + oval + text);                         
define statgraph countdown;               
dynamic _byval2_;                    * Time to display is in the TEXT variable (second BY variable); 
begingraph / subpixel=on border=false datacolors=(dagray silver) backgroundcolor=black pad=0in; 
layout region / border=false backgroundcolor=black outerpad=.5in; * Half-inch "margins";
piechart category=cat response=secs / outlineattrs=(color=dagray) datalabelcontent=none centerfirstslice=false start=90 categorydirection=clockwise display=(fill); * Pie chart of time elapsed/remaining; 
drawoval x=50 y=50 width=75 height=75 / display=(fill) fillattrs=(color=black) layer=front; * Blackout center of pie chart to create ring effect (DIY donut chart);
drawtext textattrs=(size=80pt color=white weight=bold) _byval2_ / x=50 y=50 width=75 layer=front justify=center; * Display time remaining + Happy New Year message;
endlayout;
endgraph;
end; 
run;

options nobyline;                                                   * Animated GIF initialization;
ods _all_ close;
options papersize=('5 in', '5 in') printerpath=gif animation=start 
        nodate nonumber animloop=YES animduration=.1 NOANIMOVERLAY; * One frame every 1/10th second;
ods printer file='/folders/myfolders/HappyNewYear.gif';             * Animated GIF file name;
ods graphics / width=5in height=5in imagefmt=GIF border=off;        * 5 x 5 inch image;

proc sgrender data=countdown template=countdown; * One frame for each tenth of a second;
by frame text notsorted;

options printerpath=gif animation=stop;                             * Wrap-up animated GIF creation;                         
run;
ods printer close;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Wed, 30 Dec 2020 23:48:09 GMT</pubDate>
    <dc:creator>tc</dc:creator>
    <dc:date>2020-12-30T23:48:09Z</dc:date>
    <item>
      <title>Fun With SAS ODS Graphics: Pie Chart New Year's Eve Countdown Timer</title>
      <link>https://communities.sas.com/t5/Graphics-Programming/Fun-With-SAS-ODS-Graphics-Pie-Chart-New-Year-s-Eve-Countdown/m-p/708827#M20840</link>
      <description>&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Pie Chart New Year's Eve Countdown Timer" style="width: 480px;"&gt;&lt;img src="https://communities.sas.com/t5/image/serverpage/image-id/53126iBF999D0A46D9C325/image-size/large?v=v2&amp;amp;px=999" role="button" title="HappyNewYear.gif" alt="Pie Chart New Year's Eve Countdown Timer" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;Pie Chart New Year's Eve Countdown Timer&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;A &lt;A href="https://lukashermann.dev/writing/why-the-iphone-timer-displays-fake-time/" target="_self"&gt;stopwatch-inspired&lt;/A&gt; SAS ODS Graphics pie chart New Year's Eve countdown timer. Happy New Year, all!&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;* Fun w/SAS ODS Graphics: Pie Chart New Year's Eve Countdown Timer;

proc format;                         * HH:SS stopwatch time format;
picture stopwatch low-high='99:99';
                                     * Generate data to plot;
data countdown;                      * Two observations every 10th of a second for pie chart wedges;
length text $ 20;                    * One obs with seconds elapsed, the other with seconds remaining; 
do frame=10 to -1.5 by -.1;          * 10 second countdown + 1.5 seconds extra for Happy New Year greeting;
  if frame&amp;gt;=0.01 then text=put(ceil(frame),stopwatch5.); else text="Happy New Year!";
  cat="Elapsed  "; secs=10-frame; if 0.01&amp;lt;secs then output; * Output elapsed + remaining time "wedges";
  cat="Remaining"; secs=frame;    if 0.01&amp;lt;secs then output; * Wedge values &amp;lt;=0 are a pie chart no-no!;
end;
           
proc template;                       * Template for New Years Eve countdown timer chart (pie chart + oval + text);                         
define statgraph countdown;               
dynamic _byval2_;                    * Time to display is in the TEXT variable (second BY variable); 
begingraph / subpixel=on border=false datacolors=(dagray silver) backgroundcolor=black pad=0in; 
layout region / border=false backgroundcolor=black outerpad=.5in; * Half-inch "margins";
piechart category=cat response=secs / outlineattrs=(color=dagray) datalabelcontent=none centerfirstslice=false start=90 categorydirection=clockwise display=(fill); * Pie chart of time elapsed/remaining; 
drawoval x=50 y=50 width=75 height=75 / display=(fill) fillattrs=(color=black) layer=front; * Blackout center of pie chart to create ring effect (DIY donut chart);
drawtext textattrs=(size=80pt color=white weight=bold) _byval2_ / x=50 y=50 width=75 layer=front justify=center; * Display time remaining + Happy New Year message;
endlayout;
endgraph;
end; 
run;

options nobyline;                                                   * Animated GIF initialization;
ods _all_ close;
options papersize=('5 in', '5 in') printerpath=gif animation=start 
        nodate nonumber animloop=YES animduration=.1 NOANIMOVERLAY; * One frame every 1/10th second;
ods printer file='/folders/myfolders/HappyNewYear.gif';             * Animated GIF file name;
ods graphics / width=5in height=5in imagefmt=GIF border=off;        * 5 x 5 inch image;

proc sgrender data=countdown template=countdown; * One frame for each tenth of a second;
by frame text notsorted;

options printerpath=gif animation=stop;                             * Wrap-up animated GIF creation;                         
run;
ods printer close;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 30 Dec 2020 23:48:09 GMT</pubDate>
      <guid>https://communities.sas.com/t5/Graphics-Programming/Fun-With-SAS-ODS-Graphics-Pie-Chart-New-Year-s-Eve-Countdown/m-p/708827#M20840</guid>
      <dc:creator>tc</dc:creator>
      <dc:date>2020-12-30T23:48:09Z</dc:date>
    </item>
  </channel>
</rss>

