//Trellis //REALLY badly hardcoded... var data; var dict = {}; var dict_size = 0; var max_num = 0; var min_year = 0; var max_year = 0; var range = 0; function preload() { data = loadTable('health.csv', 'csv', 'header'); } function setup() { for(var r = 0; r < data.getRowCount(); r++) { var disease = data.getString(r,0); var year = data.getNum(r, 5); var number = data.getNum(r,3); //find the unique years, add to dictionary if(disease in dict) { append(dict[disease], [year,number]); } else { dict[disease] = [year,number]; dict_size++; } } max_num = max(data.getColumn(3)); max_year = max(data.getColumn(5)); min_year = min(data.getColumn(5)); createCanvas(2200,500); } function draw() { clear(); fill(0); textSize(20); text("Trellis Plot: Disease and Number of Cases", 50,50); //this is bad but I'm running out of time textSize(10); line(100, 100, 100, 300); line(100,300, 300, 300); text(0,80,300); text(max_num/2, 50, 200); text(max_num, 50, 100); text(min_year, 100, 310); text(min_year + round((max_year-min_year)/2), 200, 310); text(max_year, 290, 310); text("Year", 200, 320); text("Cases", 10, 200); line(400,100, 400, 300); line(400,300,600,300); text(0,380,300); text(max_num/2, 350, 200); text(max_num, 350, 100); text(min_year, 400, 310); text(min_year + round((max_year-min_year)/2), 500, 310); text(max_year, 590, 310); text("Year", 500, 320); text("Cases", 300, 200); line(700,100, 700,300); line(700,300, 900,300); text(0,680,300); text(max_num/2, 650, 200); text(max_num, 650, 100); text(min_year, 700, 310); text(min_year + round((max_year-min_year)/2), 800, 310); text(max_year, 890, 310); text("Year", 800, 320); text("Cases", 600, 200); line(1000,100, 1000,300); line(1000,300, 1200,300); text(0,980,300); text(max_num/2, 950, 200); text(max_num, 950, 100); text(min_year, 1000, 310); text(min_year + round((max_year-min_year)/2), 1100, 310); text(max_year, 1190, 310); text("Year", 1100, 320); text("Cases", 900, 200); line(1300,100, 1300,300); line(1300,300, 1500,300); text(0,1280,300); text(max_num/2, 1250, 200); text(max_num, 1250, 100); text(min_year, 1300, 310); text(min_year + round((max_year-min_year)/2), 1400, 310); text(max_year, 1490, 310); text("Year", 1400, 320); text("Cases", 1200, 200); line(1600,100, 1600,300); line(1600,300, 1800,300); text(0,1580,300); text(max_num/2, 1550, 200); text(max_num, 1550, 100); text(min_year, 1600, 310); text(min_year + round((max_year-min_year)/2), 1700, 310); text(max_year, 1790, 310); text("Year", 1700, 320); text("Cases", 1500, 200); line(1900,100, 1900,300); line(1900,300, 2100,300); text(0,1880,300); text(max_num/2, 1850, 200); text(max_num, 1850, 100); text(min_year, 1900, 310); text(min_year + round((max_year-min_year)/2), 2000, 310); text(max_year, 2090, 310); text("Year", 1900, 320); text("Cases", 1800, 200); var counter = 0; for(key in dict) { for(var i = 0; i < dict[key].length; i++) { fill(0); var temp_year = int(dict[key][i][0]); var temp_num = int(dict[key][i][1]); var x_val = map(temp_year, min_year, max_year, 100 + (counter*300), 300 + (counter*300)); var y_val = map(temp_num, 0, max_num, 300, 100); ellipse(x_val, y_val, 3,3); if(dist(x_val, y_val, mouseX, mouseY) < 3) { //UGH I can't get make only one number show up // fill(255); // rect(x_val,y_val,x_val+10, v_val +5); fill(255,0,0); text("Year: " + temp_year + " Number: " + temp_num, x_val + 5, 300 - y_val); } } textSize(15) text(key, 150 + counter*300, 350); counter++; } }