var table; var myDictionary; var keys = []; function preload() { table = loadTable('crime3.csv', 'csv', 'header'); } function setup() { createCanvas(1500, 1000); var dept = table.getColumn('Department'); var idx = 0; myDictionary = createNumberDict("dept", 00); for(var x = 0; x < table.getRowCount(); x++){ if(!myDictionary.hasKey(dept[x])){ myDictionary.set(dept[x], idx); append(keys, dept[x]) idx = idx + 1; } } } function draw(){ clear() var total_Rape = table.getColumn('Totals.Violent.Rape'); var total_Murder = table.getColumn('Totals.Violent.Murder'); var dept = table.getColumn('Department'); titles(); ticks(total_Murder, total_Rape) push(); fill(0,0,0) textSize(30) textStyle(BOLD) text("Police Department Crimes", 500, 30) pop() translate(110,400); points(total_Murder, total_Rape, dept) } function titles(){ var x_pt = 150; for(var x = 0; x < keys.length; x++){ fill(0,0,0) textSize(20); text(keys[x], x_pt, 70); x_pt = x_pt + 400 } } function ticks(total_Murder, total_Rape){ textSize(10); text('# of Rapes', 10, 200); line(110,100,110, 400); textSize(10); text('# of Rapes', 420, 200); line(510,100,510, 400); textSize(10); text('# of Rapes', 820, 200); line(910,100,910, 400); textSize(10); text("# of Murders", 210, 450); line(100, 400, 400, 400); textSize(10); text("# of Murders", 610, 450); line(500, 400, 800, 400); textSize(10); text("# of Murders", 1010, 450); line(900,400,1200, 400); for(var x = 0; x < table.getRowCount(); x++){ var tick1 = map(total_Murder[x], min(total_Murder), max(total_Murder), 110,400) line(tick1,400, tick1,406) text(total_Murder[x], tick1-2, 420) tick1 = map(total_Murder[x], min(total_Murder), max(total_Murder), 510,800) line(tick1,400, tick1,406) text(total_Murder[x], tick1-2, 420) tick1 = map(total_Murder[x], min(total_Murder), max(total_Murder), 910, 1200) line(tick1,400, tick1,406) text(total_Murder[x], tick1-2, 420) } for(var x = 0; x < table.getRowCount(); x++){ var tick2 = map(total_Rape[x], min(total_Rape), max(total_Rape), 400,100) line(105,tick2, 110,tick2) text(total_Rape[x], 90,tick2) tick2 = map(total_Rape[x], min(total_Rape), max(total_Rape), 400,100) line(505,tick2, 510,tick2) text(total_Rape[x], 490,tick2) tick2 = map(total_Rape[x], min(total_Rape), max(total_Rape), 400,100) line(905,tick2, 910,tick2) text(total_Rape[x], 890,tick2) } } function points(total_Murder,total_Rape, dept){ for(var x = 0; x < table.getRowCount(); x++){ if(dept[x] == keys[0]){ var x1 = map(total_Murder[x], min(total_Murder), max(total_Murder), 0, 295) var y1 = map(total_Rape[x], min(total_Rape), max(total_Rape), 0,300) }else if(dept[x] == keys[1]){ var x1 = map(total_Murder[x], min(total_Murder), max(total_Murder), 400, 695) var y1 = map(total_Rape[x], min(total_Rape), max(total_Rape), 0,300) }else if(dept[x] == keys[2]){ var x1 = map(total_Murder[x], min(total_Murder), max(total_Murder), 800, 1090) var y1 = map(total_Rape[x], min(total_Rape), max(total_Rape), 0,300) } push(); fill(204, 51, 51) ellipse(x1, -y1, 5, 5); if(mouseX-110 < x1+2 && mouseX-110 > x1-2 && mouseY-400 < -y1+2 && mouseY-400> -y1-2){ fill(0,0,0) textSize(10); text(" # of Rapes: " + total_Rape[x], mouseX-110, mouseY-400) text(" # of Murders: " + total_Murder[x], mouseX-110, mouseY-390) } } }