// Divided Bar visualization of births by weekday  
// 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 x, y, barL, barH;
   float startX, startY, stopX, stopY;
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, 250);
   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;
   }
 // divided bar variables
   barL = width-100;
   barH = 50;
   x = 50;
   y = (height-barH)/2.0;
 noLoop();
   } // setup()
void draw() {
   startX = x;
   startY = y;
   stopX = startX;
   stopY = startY;
   for (int i=0; i < perc.length; i++) {
   // set up pie parameters for ith bar
   startX = stopX;
   startY = stopY;
   stopX = startX + perc[i]*barL;
 // draw the divided bar
   noStroke();
   fill(colors[i]);
   rect(startX, startY, stopX-startX, barH);
 // legend
   stroke(0);
   fill(0);
   textSize(12);
   if (i%2 == 0) {
   line(startX, startY+barH, startX, startY+barH+10);
   text(labels[i], startX, startY+barH+10+12);
   }
   else {
   line(startX, startY, startX, startY-10);
   text(labels[i], startX, startY-10);
   }
   }
 // draw legend
   // draw title
   fill(0);
   textSize(24);
   rectMode(CENTER);
   text("% Births by Day of Week", 100, 50);
   } // draw()