1PImage mapImage; 2Table locationTable; 3int rowCount; 4 5Table dataTable; 6float dataMin = MAX_FLOAT; 7float dataMax = MIN_FLOAT; 8 9 10void setup() { 11 size(640, 400); 12 mapImage = loadImage("map.png"); 13 locationTable = new Table("locations.tsv"); 14 rowCount = locationTable.getRowCount(); 15 16 // Read the data table 17 dataTable = new Table("random.tsv"); 18 19 // Find the minimum and maximum values 20 for (int row = 0; row < rowCount; row++) { 21 float value = dataTable.getFloat(row, 1); 22 if (value > dataMax) { 23 dataMax = value; 24 } 25 if (value < dataMin) { 26 dataMin = value; 27 } 28 } 29 30 smooth(); 31 noStroke(); 32} 33 34 35void draw() { 36 background(255); 37 image(mapImage, 0, 0); 38 39 for (int row = 0; row < rowCount; row++) { 40 String abbrev = dataTable.getRowName(row); 41 float x = locationTable.getFloat(abbrev, 1); 42 float y = locationTable.getFloat(abbrev, 2); 43 drawData(x, y, abbrev); 44 } 45} 46 47 48void drawData(float x, float y, String abbrev) { 49 float value = dataTable.getFloat(abbrev, 1); 50 float diameter = 0; 51 if (value >= 0) { 52 diameter = map(value, 0, dataMax, 3, 30); 53 fill(#333366); // blue 54 } else { 55 diameter = map(value, 0, dataMin, 3, 30); 56 fill(#ec5166); // red 57 } 58 ellipse(x, y, diameter, diameter); 59} 60