var majors =[]; var degrees = []; var years = []; var undergrad = []; var grad = []; var doc = []; var prof = []; var canvas; var matrix; var axis; 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 getRowValue(){ for(var y = 0; y< years.length; y++){ for(var m = 0; m < majors.length; m++){ var row = table.findRows(years[y],'Year')&&table.findRows(majors[m],'Major'); append(undergrad,row[y].obj['Bachelors']); append(grad,row[y].obj['Masters']); append(doc,row[y].obj['Doctorates']); append(prof,row[y].obj['Professionals']); } } } function getScale(maxValue,minValue,step){ var max_round = Math.round((maxValue-minValue)/100000)*100; var range = max_round/step; return range; } function getSmallValue(value,range){ return (value/1000000)*range; } function setup(){ degrees = ['Bachelors','Masters','Doctorates','Professionals']; majors = getUniqueColumnValue('Major'); years = getUniqueColumnValue('Year'); getRowValue(); var rangeUndergrad = getScale(max(undergrad),min(undergrad),100); var rangeGrad = getScale(max(grad),min(grad),100); var rangeDoc = getScale(max(doc),min(doc),20); var rangeProf = getScale(max(prof),min(prof),10); canvas = { width: 800, height: 800, margin: 50, label: 20, text: 'Major' }; matrix = { size: degrees.length, height : canvas.height/(degrees.length+1), width : canvas.width/(degrees.length+1) }; axis = { xx1: canvas.margin, xy1: canvas.height-canvas.margin, xx2: canvas.width, xy2: canvas.height-canvas.margin, yx1: canvas.width-canvas.margin, yy1: canvas.margin, yx2: canvas.width-canvas.margin, yy2: canvas.width, xscale : 40, underGradScale : rangeUndergrad, gradScale: rangeGrad, docScale: rangeDoc, profScale: rangeProf }; createCanvas(canvas.width,canvas.height); // drawAxis(); } function draw(){ for(var m = 0; m < degrees.length ; m++){ for(var n=0;n< degrees.length; n++){ drawScatter(m,n); } } } function drawScatter(m,n){ var x,y,scaleX,scaleY,number; number =10; if(m==0 && n==0){ x=undergrad; y=undergrad; scaleX = axis.underGradScale; scaleY = axis.underGradScale; number=10; } else if(m==0 && n==1){ x=undergrad; y=grad; scaleX = axis.underGradScale; scaleY = axis.gradScale; } else if(m==0 && n==2){ x=undergrad; y=doc; scaleX = axis.underGradScale; scaleY = axis.docScale; } else if(m==0 && n==3){ x=undergrad; y=prof; scaleX = axis.underGradScale; scaleY = axis.profScale; } else if(m==1 && n==0){ x= grad; y = undergrad; scaleX = axis.gradScale; scaleY = axis.underGradScale; } else if(m==1 && n==1){ x= grad; y = grad; scaleX = axis.gradScale; scaleY = axis.gardScale; number =10; } else if(m==1 && n==2){ x= grad; y = doc; scaleX = axis.gradScale; scaleY = axis.docScale; } else if(m==1 && n==3){ x= grad; y = prof; scaleX = axis.gradScale; scaleY = axis.profScale; } else if(m==2 && n==0){ x= doc; y = undergrad; scaleX = axis.docScale; scaleY = axis.underGradScale; } else if(m==2 && n==1){ x= doc; y = grad; scaleX = axis.docScale; scaleY = axis.gradScale; } else if(m==2 && n==2){ x= doc; y = doc; scaleX = axis.docScale; scaleY = axis.gradScale; number = 75; } else if(m==2 && n==3){ x= doc; y = prof; scaleX = axis.docScale; scaleY = axis.profScale; } else if(m==3 && n==0){ x= prof; y = undergrad; scaleX = axis.profScale; scaleY = axis.underGradScale; } else if(m==3 && n==1){ x= prof; y = grad; scaleX = axis.profScale; scaleY = axis.gradScale; } else if(m==3 && n==2){ x= prof; y = doc; scaleX = axis.profScale; scaleY = axis.docScale; } else { x= prof; y = prof; scaleX = axis.profScale; scaleY = axis.profScale; number = 5; } push(); rect(m*matrix.width,n*matrix.height,matrix.width, matrix.height); pop(); push(); fill(255,10,25); noStroke(); //ellipse(matrix.width*m,matrix.height*(n+1),10,10); for(var i = 0; i