//TRIVARIATE SCATTERPLOT var data; var max_num = 0; var max_pop = 0; var dict = {}; function preload() { data = loadTable('health.csv', 'csv', 'header'); } function setup() { createCanvas(1300,1300); for(var r = 0; r < data.getRowCount(); r++) { var disease = data.getString(r,0); var number = data.getNum(r,3); if(disease in dict) { dict[disease][0] += number; } else { dict[disease] = []; dict[disease][0] = number; dict[disease][1] = Math.random() *255; dict[disease][2] = Math.random() *255; dict[disease][3] = Math.random() *255; } } max_num = max(data.getColumn(3)); max_pop = max(data.getColumn(4)); //print(data.getRowCount()); } function draw() { clear(); textSize(10); //axes drawn (draw little lines on axes) line(200,100,200,700); line(200,700,1200,700); var scale_x = 1000/max_pop; var scale_y = 500/max_num; var count_num = 0; var count_pop = 0; for(var y = 700; y >= 200; y--) { if(y%50 == 0) { line(190,y,210,y); fill(0); text(round(count_num), 120, y); count_num += round(.1 * max_num); } } for(var x = 200; x <= 1200; x++) { if(x%100 == 0) { line(x, 690, x, 710); fill(0); text(round(count_pop), x, 750); count_pop += round(.1 * max_pop); } } for(var r = 0; r < data.getRowCount(); r++) { var x_val = data.getNum(r,4); var y_val = data.getNum(r,3); var disease = data.getString(r,0); var counter = 0; for(key in dict) { if(disease == key) { fill(dict[key][1],dict[key][2], dict[key][3]); ellipse(200 + x_val*scale_x, 700 - y_val*scale_y, 5, 5); } var legend_y = 200 +(counter*20) fill(dict[key][1], dict[key][2], dict[key][3]); text(key, 1000, 100 + (counter*20)); counter++; } if(dist(200+x_val*scale_x, 700 - y_val*scale_y, mouseX, mouseY) < 5) { fill(255,0,0); text("Population: " + x_val + " Number: " + y_val, 200+x_val*scale_x, 700 - y_val*scale_y); } } fill(0); textSize(20); text("State Population vs Number of Recorded Diseases (Colored by Diseases)", 210, 100) //text("Number of Diseases", 5, 450); text("Population", 500, 800); text("Legend", 1000,50); textSize(10); text("Number of Diseases", 5, 450); }