var table; function preload() { table = loadTable('classics_reduced.csv','csv', 'header'); } function draw() { clear(); createCanvas(800, 800); var titles = []; var rank = []; var avgLen = []; for (var x=0; x < table.getRowCount(); x++) { append(rank, table.getString(x,23)); } for (var x=0; x < table.getRowCount(); x++) { append(avgLen, table.getString(x,2)); } for (var x=0; x < table.getRowCount(); x++) { append(titles, table.getString(x,28)); } var h = 600, w = 700; var margin = 50; stroke(1); line(margin,h-margin,w-margin,h-margin); // x axis (50,550), (550,550) line(margin,margin,margin,h-margin); // y axis (50,50), (50,550) fill(50); var xlab = "Rank"; var ylab = "Avg Sentence Length"; textSize(10); textAlign(LEFT); text(xlab, w-margin + 10, h-margin); textAlign(CENTER); text(ylab, margin, margin - 10); var maxLen = max(avgLen); // 55 // line(margin-4, h-margin, margin+4, h-margin); // bottom y axis mark at 0 for (var i=0; i<=maxLen; i = i+5) { // y axis var ymap = map(i, 0, maxLen, h - margin, margin+20); line(margin-3, ymap, margin+3, ymap); textAlign(RIGHT); textSize(10); text(i, margin-10, ymap); } var len = rank.length; var partition = (w - (2*margin) - 40)/len; var barWidth = partition * 0.8; // Width of each bar // line(w- margin -20, 0, w- margin -20, 600); // x right bound // line(margin +20, 0, margin+0, 600); // x left bound for (var i = 0; i < len; i++) { var lenMap = map(avgLen[i], 0, maxLen, h-margin, margin+20); var xmap = map(rank[i], 1, 100, margin+20, w-margin-20); fill('#fae'); noStroke(); rect(xmap, lenMap, barWidth, h - margin - lenMap); // Draw rect object if ((i+1)%10 == 0) { // X axis markings textSize(10); textAlign(CENTER); fill(50); text(i+1, xmap + partition/2, h-margin+20); } if ((mouseX > xmap) && (mouseX < (barWidth + xmap)) && (mouseY > lenMap) && (mouseY < h - margin)) { fill('rgb(255,51,51)'); stroke(1); rect(xmap, lenMap, barWidth, h - margin - lenMap); noStroke(); textSize(10); fill(50); textAlign(CENTER); text("Avg sentence length: " + avgLen[i], xmap + partition/2, margin); text("Title: " + titles[i], xmap + partition/2, margin+11); } } }