// Pie Chart visualization of births by weekday
 // Now using arrays...and added data labels/legend etc. 
// The data variables...
   // sun, mon, tue, wed, thu, fri, sat
   int[] data = {
   5, 5, 1, 4, 4, 4, 8
   };
String[] labels = {
 "Sunday", "Monday", "Tuesday", "Wednesday", 
 "Thursday", "Friday", "Saturday"
   };
   int total;
   float[] perc = new float[7];
// The sketch variables
   float cx, cy, pieDia;
   float startAngle, stopAngle;
color [] colors = {
   color(238, 118, 0), // sunday
   color(123, 165, 248), 
   color(7, 57, 1), 
   color(255, 246, 63), 
   color(255, 0, 0), 
   color(0, 255, 0), 
   color(0, 0, 255) // saturday
   };
   void setup() {
   size(500, 500);
   background(255);
   smooth();
 // process
   // compute the total population
   total = 0;
   for (int i=0; i < data.length; i++) {
   total += data[i];
   }
 // compute percentages
   for (int i=0; i < data.length; i++) {
   perc[i] = float(data[i])/total;
   }
 // pie variables
   cx = width/2;
   cy = height/2;
   pieDia = 250;
 noLoop();
   } // setup()
void draw() {
   startAngle = 0;
   stopAngle = 0;
   for (int i=0; i < perc.length; i++) {
   // set up pie parameters for ith slice
   startAngle = stopAngle;
   stopAngle = startAngle + TWO_PI*perc[i];
 // dra the pie
   noStroke();
   fill(colors[i]);
   arc(cx, cy, pieDia, pieDia, startAngle, stopAngle);
   }
 // draw legend
   // draw title
   fill(0);
   textSize(24);
   rectMode(CENTER);
   text("Births by day of week (data in %)", 50, 50);
 // legend variables
   float w = 20, h = 20;
   float x = 25;
   float y = height-((h+5)*data.length);
 rectMode(CORNER);
   for (int i=0; i < perc.length; i++) {
   stroke(0);
   fill(colors[i]);
   rect(x, y, w, h);
   fill(0);
   textSize(12);
   text(labels[i], x+w+5, y+h);
   y += h+5;
   }
   } // draw()