SAS Visual Analytics Gallery

A place to share and chat about interesting stories told through beautiful visualizations
BookmarkSubscribeRSS Feed

How to make a Christmas greeting card with SAS Visual Analytics

Started ‎12-10-2018 by
Modified ‎12-10-2018 by
Views 3,677

It's the time of the year where we all need to send out Christmas greeting cards!

 

Enter the ASCII world

 

Rather than drawing your card cover manually we are going to use a little trick and simply import data into our SAS Visual Analytics environment. One way of generating appropriate data for our cover card is to import an ASCII art picture.

 

For example:

 

 

                              ..,,,,,,,,,,,,,,,,..
                        ..,,;;;;;;;;;;;;;;;;;;;;;;;;;;,,.
                    .,::::;;;;aaaaaaaaaaaaaaaaaaaaaaaaaaa;;,,.
                .,;;,:::a@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@a,
              ,;;;;.,a@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@a
           ,;;;;%;.,@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@a,
        ,;%;;;;%%;,@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
     ,;;%%;;;;;%%;;@@@@@@@@@@@@@@'%v%v%v%v%v%v%v%v%v%v%v%v`@@@@@@@@@
   ,;;%%;;;;:;;;%;;@@@@@@@@@'%vvvvvvvvvnnnnnnnnnnnnnnnnvvvvvv%`@@@@'
  ,;%%;;;;;:;;;;;;;;@@@@@'%vvva@@@@@@@@avvnnnnnnnnnnvva@@@@@@@OOov,
 ,;%;;;;;;:::;;;;;;;@@'OO%vva@@@@@@@@@@@@vvnnnnnnnnvv@@@@@@@@@@@Oov
 ;%;;;;;;;:::;;;;;;;;'oO%vvn@@%nvvvvvvvv%nnnnnnnnnnnnn%vvvvvvnn%@Ov
 ;;;;;;;;;:::;;;;;;::;oO%vvnnnn>>nn.   `nnnnnnnnnnnn>>nn.   `nnnvv'
 ;;;;;;;;;:::;;;;;;::;oO%vvnnvvmmmmmmmmmmvvvnnnnnn;%mmmmmmmmmmmmvv,
 ;;;;;;;;;:::;;;;;;::;oO%vvmmmmmmmmmmmmmmmmmvvnnnv;%mmmmmmmmmmmmmmmv,
 ;;;;;;;;;;:;;;;;;::;;oO%vmmmmnnnnnnnnnnnnmmvvnnnvmm;%vvnnnnnnnnnmmmv
  `;%;;;;;;;:;;;;::;;o@@%vvmmnnnnnnnnnnnvnnnnnnnnnnmmm;%vvvnnnnnnmmmv
   `;;%%;;;;;:;;;::;.oO@@%vmmnnnnnnnnnvv%;nnnnnnnnnmmm;%vvvnnnnnnmmv'
     `;;;%%;;;:;;;::;.o@@%vvnnnnnnnnnnnvv%;nnnnnnnmm;%vvvnnnnnnnv%'@a.
      a`;;;%%;;:;;;::;.o@@%vvvvvvvvvvvvvaa@@@@@@@@@@@@aa%%vvvvv%%@@@@o.
     .@@o`;;;%;;;;;;::;,o@@@%vvvvvvva@@@@@@@@@@@@@@@@@@@@@avvvva@@@@@%O,
    .@@@@@Oo`;;;;;;;;::;o@@@@@@@@@@@@@@@@@@@@"""""""@@@@@@@@@@@@@@@@@OO@a
  .@@@@@@@@@OOo`;;;;;;:;o@@@@@@@@@@@@@@@@"           "@@@@@@@@@@@@@@oOO@@@,
 .@@@@o@@@@@@@OOo`;;;;:;o,@@@@@@@@@@%vvvvvvvvvvvvvvvvvv%%@@@@@@@@@oOOO@@@@@,
 @@@@o@@@@@@@@@OOo ;::;'oOOooooooooOOOo%vvvvvvvvvvvvvv%oOOooooooooOOO@@@O@@@,
 @@@oO@@@@@@@@@OO a@@@@@a,oOOOOOOOOOOOOOOoooooooooooooOOOOOOOOOOOOOO@@@@Oo@@@
 @@@oO@@@@@@@OO a@@@@@@@@Oo,oO@@@@@@@@@@OOOOOOOOOOOOOO@@@@@@@@@@@@@@@@@@Oo@@@
 @@@oO@@@@@@OO @@@@@@@@@@@OO,oO@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@Oo@@@
 @@@@o@@@@@@OO @@@@@@@@@@OOO,oO@@@@@@@@@O@@@@@@@@@@@@@@@@@@@@@o@@@@@@@@@O@@@@
 @@@@@o@@@@@OOo @@@@@@@OOOO'oOO@@@@@@@@Oo@@@@@@@@@@@@O@@@@@@@@Oo@@@@@@@@@@@@a
 `@@@@@@@O@@@OOOo`OOOOOOO'oOO@@@@@@@@@O@@@@@@@@@@@@@@@O@@@@@@@@Oo@@@@@@@@@@@@
  `@@@@@OO@@@@@OOOooooooooOO@@@@@@@@@@@@@@@@@@@@@@@@@@Oo@@@@@@@Oo@@@@@@oO@@@@
    `@@@OO@@@@@@@@@@@@@@@@@@@O@@@@@@@@@@@@@@@@@@@@@@@@Oo@@@@@@@O@@@@@@@oO@@@'
      `@@`O@@@@@@@@@@@@@@@@@@@Oo@@@@@@@@@@@@@@@@@@@@@@Oo@@@@@@@@@@@@@@@O@@@'
        `@ @@@@@@@@@@@@@@@@@@@OOo@@@@@@@@@@@@@@@@@@@@@O@@@@@@@@@@@@@@@'@@'
           `@@@@@@@@@@@@@@@@@@OOo@@@@@@@@@@@@@@@@@@@@O@@@@@@@@@@@@@@@ a'
               `@@@@@@@@@@@@@@OOo@@@@@@@@@@@@@@@@@@@@@@@@Oo@@@@@@@@'
                  `@@@@@@@@@@@Oo@@@@@@@@@@@@@@@@@@@@@@@@@Oo@@@@'
                      `@@@@@@Oo@@@@O@@@@@@@@@@@@@@@@@@@'o@@'
                          `@@@@@@@@oO@@@@@@@@@@@@@@@@@ a'
                              `@@@@@oO@@@@@@@@@@@@@@' '
                                '@@@o'`@@@@@@@@'
                                 @'   .@@@@'
                                     @@'
                                   @'

 

Import ASCII data

Pick one of the examples and copy the ASCII text into a text file, e.g. santa.txt. Then execute the following SAS Data Step which reads the text line by line and converts each ASCII character into one or more rows. The number of rows generated depends on the ASCII characters. We make use of the rank function here which returns the position of a character in the ASCII or EBCDIC collating sequence.

 

 

filename in "santa.txt";%let GRID_WIDTH=400;
data data.santa;
	infile in truncover;
	input line $CHAR&GRID_WIDTH..;
   
	length var1 8. var2 8.;
	var2 = &GRID_WIDTH. - _n_;

	do i = 1 to &GRID_WIDTH.;
		tmp = put(line,$char&GRID_WIDTH..);
   		n = substrn(tmp,i,1);
		b = rank(n);
		var1 = i;		
		do c = 33 to b;
			output;
		end;
	end;

	keep var1 var2;
run;

 

Creating the cover card

For the cover card we are going to use a heat map visualization with the bin number set to 100. Make sure the number is higher than the total number of rows of your original ASCII picture. The following example screen shows a collection of four selected arts.

 

va83_santa_heatmap.png

 

Happy Christmas everyone!

Version history
Last update:
‎12-10-2018 10:28 AM
Updated by:
Contributors

SAS Innovate 2025: Register Today!

 

Join us for SAS Innovate 2025, our biggest and most exciting global event of the year, in Orlando, FL, from May 6-9. Sign up by March 14 for just $795.


Register now!

Article Labels
Article Tags