var table; function preload() { table = loadTable('3980.edges', 'edges'); } var width = 1200.0; var length = 1200.0; var vMap = new Map(); var vArray = new Array(); function setup() { createCanvas(1200, 1200); temp = 1200.0/10; var firstColumn = table.getColumn(0); var secondColumn = table.getColumn(1); firstColumn.forEach(function(row, index) { var row = firstColumn[index].toString().split(" "); var firstNode = row[0]; var secondNode = row[1]; if(vMap.get(firstNode) == null){ var pairList = new Array(); vMap.set(firstNode, pairList); } vMap.get(firstNode).push(secondNode); if(vMap.get(secondNode) == null){ var pairList = new Array(); vMap.set(secondNode, pairList); } vMap.get(secondNode).push(firstNode); if(!(vArray.includes(firstNode))){ vArray.push(firstNode); } if(!(vArray.includes(secondNode))){ vArray.push(secondNode); } }); vArray.sort(function(a, b){return a-b}); } function draw(){ // draw square // draw x's background(255); var startPosition = 50; var endPosition = 1150; line(startPosition, startPosition, endPosition, startPosition); line(startPosition, endPosition, endPosition, endPosition); // draw y's line(startPosition, startPosition, startPosition, endPosition); line(endPosition, startPosition, endPosition, endPosition); // draw inner lines var numOfVertices = vArray.length; var blocklength = 1100.0/numOfVertices; // print(blocklength); var adjustmentVal = blocklength/10; fill(0); textSize(12); text('Social Network Matrix', 400, 10); text('id', startPosition-20, startPosition); for(var i = 0; i < numOfVertices; i++){ fill(0); var dock = startPosition + (i+1) * blocklength; line(dock, startPosition, dock, endPosition); // vertical lines (same x) textSize(8); text(vArray[i], dock - blocklength + adjustmentVal, startPosition - 10); text(vArray[i], startPosition - 20, dock - blocklength + 15); line(startPosition, dock, endPosition, dock); // seek out if connection exists fill('#fae'); for(var j = 0; j < vMap.get(vArray[i]).length; j++){ var node1 = vArray[i]; var node2 = vMap.get(vArray[i])[j]; var firstNodeIndex = i; var secondNodeIndex = vArray.indexOf(vMap.get(vArray[i])[j]); var xCor = startPosition + (firstNodeIndex) * blocklength; var yCor = startPosition + (secondNodeIndex) * blocklength; rect(xCor, yCor, blocklength, blocklength); if( mouseX > xCor - 3&& mouseY < yCor + blocklength + 3 && mouseX < xCor + blocklength + 3 && // right boundary mouseY > yCor - 3) { fill(0); text('('+node1+', '+node2+')', mouseX , mouseY -5); fill('#fae'); } } } }