var majors = []; var employed=[]; var mean=[]; var years = []; var canvas; var axis; var scale; function preload(){ table = loadTable('graduates.csv', 'csv', 'header'); } function getUniqueColumnValue(columnName){ var column = table.getColumn(columnName); var value = []; for(var i=0; i < column.length; i++){ if(value.indexOf(column[i]) == -1){ append(value,column[i]); } } return value; } function getScale(maxValue,minValue){ return Math.ceil((maxValue-minValue)/100000)*10; } function getSmallValue(value){ return (value/100000)*10; } function setup(){ majors=['Computer Science and Math','Electrical Engineering','Biological Sciences']; years = getUniqueColumnValue('Year'); for(var m = 0; m < majors.length; m++){ var row = table.findRows(majors[m],'Major'); for(var r =0; r< row.length ;r++){ append(employed,row[r].obj['Employed']); append(mean,row[r].obj['Mean']); } } canvas = { width: 800, height: 800, margin: 50, label: 30, text: 'Major' }; axis = { xx1: canvas.margin, xy1: canvas.height, xx2: canvas.width, xy2: canvas.height, yx1: canvas.margin, yy1: canvas.margin, yx2: canvas.margin, yy2: canvas.width, }; scale = { step: canvas.width/3, y1: dist(axis.yx1,axis.yy1,axis.yx2, axis.yy2)/(years.length-1), y2: dist(axis.yx1,axis.yy1,axis.yx2, axis.yy2)/getScale(max(employed),0), y3: dist(axis.yx1,axis.yy1,axis.yx2, axis.yy2)/getScale(max(mean),0) }; createCanvas(canvas.width,canvas.height); } function drawLegand(x,y,w,h,texts){ var colors = [0,153,153,255,102,102,102,178,255]; stroke(0); rect(x,y,w,h/2); text(texts,x+5,y+15); push(); fill(0,153,153); noStroke(); rect(x+5,y+canvas.label,10,10); pop(); text(majors[0],x+20,y+canvas.label+10); push(); fill(255,102,102); noStroke(); rect(x+5,y+canvas.label+20,10,10); pop(); text(majors[1],x+20,y+canvas.label+30); push(); fill(102,178,255); noStroke(); rect(x+5,y+canvas.label+40,10,10); pop(); text(majors[2],x+20,y+canvas.label+50); } function draw(){ background(255); push(); stroke(0); drawAxis(); pop(); drawLegand(canvas.width-(scale.step)+canvas.margin+canvas.label,100,180,200,'Majors'); for(var i = 0; i