// Area bubble visualization of births by weekday
 // Now using arrays...  
// The data variables...
   // sun, mon, tue, wed, thu, fri, sat
   int[] data = {
   5, 5, 1, 4, 4, 4, 8
   };
String[] labels = {
 "SUN", "MON", "TUE", "WED", 
 "THU", "FRI", "SAT"
   };
   int total;
   float[] perc = new float[7];
// The sketch variables
   float maxW, maxArea, cx, cy, lastX, w;
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, 200);
   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;
   }
 // sketch variables
   maxW = width/(1+data.length);
   maxArea = PI*maxW/2*maxW/2;
   cy = height/2;
   lastX = 0;
 noLoop();
   } // setup()
void draw() {
   for (int i=0; i < perc.length; i++) {
   // set up parameters for ith bubble
   cx = lastX+maxW;
   w = 2*sqrt(maxArea*perc[i]/PI);
 // draw the bubble
   noStroke();
   fill(colors[i]);
   ellipse(cx, cy, w, w);
   lastX = cx;
 // labels
   stroke(0);
   fill(0);
   textSize(12);
   text(labels[i], cx-12, cy+50);
   }
 // draw title
   fill(0);
   textSize(24);
   rectMode(CENTER);
   text("% Births by Day of Week", 100, 50);
   } // draw()