var Width = 1200; var Height = 800; var Padding = 200; var tickSize = 10; var xLabel = ""; var yLabel = ""; var disease = ""; var values = []; var maximumX, minimumX, xValues, minimumY, maximumY, yValues,diseaseArr; var fontBold; function preload(){ table=loadTable("DiseaseInfoAlabama.csv", "csv"); //fontBold = loadFont('assets/Bold.ttf'); } function setup() { createCanvas(Width, Height); xLabel = table.getColumn(0)[0]; yLabel = table.getColumn(1)[0]; disease = table.getColumn(2)[0]; for (var i = 0; i < 2; i++) { var columnValues = table.getColumn(i).slice(1, table.getColumn(0).length); columnValues = columnValues.map(function (number) { return parseFloat(number); }); values.push(columnValues); } xValues = values[0]; yValues = values[1]; diseaseArr = table.getColumn(2); maximumX = Math.max.apply(Math, xValues); maximumY = Math.max.apply(Math, yValues); minimumX = Math.min.apply(Math, xValues); minimumY = Math.min.apply(Math, yValues); } function draw() { background(255, 255, 255); drawAxes(); var tickGap = (Width - Padding * 2) / 5; var XScale = minimumX, YScale = 0; var temp = (maximumX - minimumX) / 5; //("Max and Min and Temp is " + maximumX + " " + minimumX + " " + temp); for (var i = 1; i <= 5; i++) { if(i == 5) XScale = maximumX; text(XScale, Padding + i * tickGap - 30, Height - Padding + tickSize + 15); XScale += temp; } tickGap = (Height - Padding * 2) / 5; YScale = 0; // ("Start at " + YScale); for (i = 0; i <= 5; i++) { text(YScale, Padding - 50, Padding + (5 - i) * tickGap + 5); YScale += int(maximumY/5); } var data = []; for (i = 0; i < xValues.length; i++) { data.push(createVector(xValues[i], yValues[i])); } for (i = 0; i < data.length; i++) { var point = data[i]; // print("MAx values are : " + maximumX + "3899518, " 150537+ maximumY); var xPosition = int(map(point.x, (minimumX - temp) - (temp / 4), maximumX, Padding, Width - Padding)); var yPosition = int(map(point.y, 0, maximumY, Height - Padding, Padding)); // print("xPosition an dyPosition are " + xPosition + " " + yPosition); colorbyDisease(diseaseArr[i+1], xPosition, yPosition); } for (i = 0; i < data.length; i++) { var point = data[i]; var xPosition = map(point.x, (minimumX - temp) - (temp / 4), maximumX, Padding, Width - Padding); var yPosition = int(map(point.y, 0, maximumY, Height - Padding, Padding)); var radius = 80; if (sq(mouseX - xPosition) + sq(mouseY - yPosition) < radius) { fill(230, 138, 0); ellipse(xPosition, yPosition, 10, 10); // print(point); text(diseaseArr[i+1] + " (" + point.x + ", " + point.y + ")", mouseX + 15, mouseY); } } } function colorbyDisease(diseaseName, xPosition, yPosition) { switch (diseaseName) { case 'HEPATITIS A': fill(0, 204, 0); ellipse(xPosition, yPosition, 10, 10); rect(Width / 2 + 350, Padding / 2 + 100, Width / 24, Padding / 10); fill(0, 0, 0); textSize(18); text("HEPATITIS A", Width / 2 + 420, Padding / 2 + 115); break; case 'PERTUSSIS': fill(255, 0, 102); ellipse(xPosition, yPosition, 10, 10); rect(Width / 2 + 350, Padding / 2 + 125, Width / 24, Padding / 10); fill(0, 0, 0); textSize(18); text("PERTUSSIS", Width / 2 + 420, Padding / 2 + 140); break; default: fill(0, 51, 204); ellipse(xPosition, yPosition, 10, 10); rect(Width / 2 + 350, Padding / 2 + 150, Width / 24, Padding / 10); fill(0, 0, 0); textSize(18); text("OTHER", Width / 2 + 420, Padding / 2 + 165); } } function drawAxes() { stroke(0, 0, 0); strokeWeight(1.5); fill(0, 0, 0); textSize(25); // textFont(fontBold); text("Scatter Plot for Diseases in Alabama over All Years", Width / 2 - 150, Padding / 2); textSize(18); var x1 = Padding; var x2 = Width - Padding; var y1 = Height - Padding; var y2 = y1; line(x1, y1, x2, y2); var tickGap = (Width - Padding * 2) / 5; for (var j = 0; j < 5; j++) { line(x1 + (j + 1) * tickGap, y1, x1 + (j + 1) * tickGap, y1 + tickSize); } text(xLabel, x2 + 5, y2 + 40); x1 = Padding; x2 = x1; y1 = Height - Padding; y2 = Padding; line(x1, y1, x2, y2); tickGap = (y1 - y2) / 5; for (var j = 0; j < 5; j++) { line(x1, y2 + j * tickGap, x1 - tickSize, y2 + j * tickGap); } text(yLabel, x1, y2 - 15); }