Displaying population data from a CSV file onto a map

I am trying to plot population data (from three years) from a CSV file onto a map of the UK but am not sure how to do display the data, I have gathered the X and Y coordinates of each city in the CSV file, but I am not sure how to plot this onto the map in processing (I would like to do something like a 3D bar for each location). I would also like to switch between the years using the plus and minus keys. this is similar to a problem that i have previously seen on here and any help would be appreciated.

Summary

This text will be hidden

Reading formated code (ctrl+t in processing ide) from a code block so much easier

import peasy.*;

Table data;
PImage map;
float r = 400;
PeasyCam camera;
PVector position;

String[] years =
  {
  "1991", "2001", "2011"
};
int currentyear = 0;

void setup() {

  size(800, 800, P3D);

  map = loadImage("uk-admin.jpg");

  camera = new PeasyCam(this, 3000);
  camera.setMinimumDistance(100);
  camera.setMaximumDistance(3500);
  position = new PVector(-map.width/2, 200, -map.height/2);
  data = loadTable("Data.csv", "header");
}

void draw() {
  background (#000000);
  noLights();
  adjustCamera();
  mapSetup();
}

void mapSetup() {
  pushMatrix();

  translate(position.x, position.y, position.z);
  rotateX(radians(90));
  image (map, 0, 0);

  lights();

  popMatrix();
}
void adjustCamera() {
  camera.setRotations(radians(45), radians((((float)mouseX/width) * 90) - 45), 0);
}
void plot() {
  for (TableRow row : data.rows()) {
    float lat = row.getFloat("X");
    float lon = row.getFloat("Y");
    float pop = row.getFloat("1991");
    float theta = radians(lat);
    int heightBox=row.getInt(years[currentyear]);

    float phi = radians(lon) + PI;

    float x = r * cos(theta) * cos(phi);
    float y = -r * sin(theta);
    float z = -r * cos(theta) * sin(phi);

    PVector pos = new PVector(x, y, z);

    float h = pow(10, pop);
    float maxh = pow(10, 7);
    h = map(h, 0, maxh, 10, 100);
    PVector xaxis = new PVector(1, 0, 0);
    float angleb = PVector.angleBetween(xaxis, pos);
    PVector raxis = xaxis.cross(pos);

    pushMatrix();
    translate(x, y, z);
    rotate(angleb, raxis.x, raxis.y, raxis.z);
    fill(255);
    box(h, 20, heightBox);
    popMatrix();
  }
}

void keyPressed() {
  if (key == CODED) {
    if (keyCode == UP) {
      position.z += 50;
    }

    if (keyCode == DOWN) {
      position.z -= 50;
    }

    if (keyCode == LEFT) {
      position.x += 50;
    }

    if (keyCode == RIGHT) {
      position.x -= 50;
    }
  } else {
    switch(key) {
    case'+':
      currentyear++;
      break;

    case'-':
      currentyear--;
      break;
    }//switch
  }//else
  if (currentyear<0)
    currentyear=2;
}

Are locations wrong? Why don’t you put the name of each city on the map and check with it how locations are off. Then you can put numbers there and think about 3D bars.