let salem;
let salem_max;
let dataS = [];
let dataSMax = [];
let temperatures = [];
let tMax = [];
let c = 0;
function preload() {
salem = loadTable(
"/assets/temps_average%20-%20Sheet1.csv"
);
salem_max = loadTable("/assets/temps_max.csv");
}
function setup() {
createCanvas(500, 500);
background(40, 40, 60);
dataS = [];
dataSMax = [];
temperatures = [];
tMax = [];
dataS = salem.getArray();
dataSMax = salem_max.getArray();
for (let i = 1; i < dataS.length; i++) {
temperatures[i - 1] = [];
for (let j = 0; j < 14; j++) {
if (dataS[i][j] != "M") {
temperatures[i - 1][j] = int(dataS[i][j]);
} else {
temperatures[i - 1][j] = -999;
}
}
}
for (let i = 1; i < dataSMax.length; i++) {
tMax[i - 1] = [];
for (let j = 0; j < 14; j++) {
if (dataSMax[i][j] != "M") {
tMax[i - 1][j] = int(dataSMax[i][j]);
} else {
tMax[i - 1][j] = -999;
}
}
}
noLoop();
}
function draw() {
translate(width / 2, width / 2);
visuals(c);
}
function visuals(v) {
if (v == 0) {
noFill();
strokeWeight(2);
for (let i = 0; i < temperatures.length - 1; i++) {
for (let j = 1; j < 13; j++) {
temp = temperatures[i][j];
r = (temperatures[i][0] - temperatures[1][0] + 2) * 3.5;
stroke(temp * 2.5, temp * 2.5, temp * 3);
if (temp != -999) {
arc(0, 0, r, r, (PI / 6) * j, (PI / 6) * (j + 1));
}
}
}
for (let i = 0; i < tMax.length - 1; i++) {
for (let j = 1; j < 13; j++) {
temp = tMax[i][j];
r = (tMax[i][0] - tMax[1][0] + 2) * 3.5;
stroke(temp * 2.5, temp * 2.5, temp * 3);
if (temp != -999) {
arc(0, 0, r, r, (PI / 6) * j + PI / 12, (PI / 6) * (j + 1));
}
}
}
}
if (v == 1) {
noFill();
strokeWeight(0.8);
stroke(200, 200, 250);
for (let i = 0; i < temperatures.length - 1; i++) {
for (let j = 1; j < 13; j++) {
temp = temperatures[i][j];
fill(temp * 3.5, temp * 3, temp * 3);
noStroke();
r = (temperatures[i][0] - temperatures[1][0] + 2) * 2.5 + temp / 5;
if (temp != -999) {
rect(
-width / 2 + (width / 13) * j - width / 26,
-height / 2 + i * 2.5 + 100,
width / 13,
2.6
);
} else {
}
}
}
}
if (v == 2) {
noFill();
strokeWeight(1);
for (let i = 0; i < temperatures.length - 1; i++) {
for (let j = 1; j < 13; j++) {
temp = temperatures[i][j];
r = (temperatures[i][0] - temperatures[1][0] + 2) * 3.5;
stroke(temp * 2.5, temp * 2.5, temp * 3, 100);
if (temp != -999) {
circle(
(r * sin((PI / 6) * j + (PI / 360) * i)) / 2,
(r * cos((PI / 6) * j + (PI / 360) * i)) / 2,
3 + temp / 2
);
}
}
}
for (let i = 0; i < tMax.length - 1; i++) {
for (let j = 1; j < 13; j++) {
temp = tMax[i][j];
r = (tMax[i][0] - tMax[1][0] + 2) * 3.5;
stroke(temp * 2.5, temp * 2.5, temp * 3, 100);
if (temp != -999) {
circle(
(r * sin((PI / 6) * j + (PI / 360) * i + PI / 12)) / 2,
(r * cos((PI / 6) * j + (PI / 360) * i + PI / 12)) / 2,
3 + temp / 4
);
}
}
}
}
}
function mousePressed() {
if (c < 2) {
c++;
} else {
c = 0;
}
setup();
draw();
}