// 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()