p5(sketch => {
let data;
let chartCenterX = 200;
let chartCenterY = 180;
let chartRadiusMin = 50;
let chartRadiusMax = 130;
let chartDomainMin = 20;
let chartDomainMax = 100;
let barWidth = 4;
sketch.preload = function() {
data = sketch.loadTable(dataURL, "csv", "header");
};
sketch.setup = function() {
sketch.createCanvas(400, 400);
sketch.angleMode(sketch.DEGREES);
sketch.noLoop();
};
sketch.draw = function() {
sketch.background(255);
sketch.textSize(10);
let rowCount = data.getRowCount();
sketch.noStroke();
for (let r = 0; r < rowCount; r++) {
let a = r / rowCount * 360 - 90;
sketch.push();
sketch.translate(chartCenterX, chartCenterY);
sketch.rotate(a);
let minTemp = data.getNum(r, "tempmax");
let maxTemp = data.getNum(r, "tempmin");
let radiusMin = sketch.map(minTemp,
chartDomainMin, chartDomainMax,
chartRadiusMin, chartRadiusMax);
let radiusMax = sketch.map(maxTemp,
chartDomainMin, chartDomainMax,
chartRadiusMin, chartRadiusMax);
sketch.stroke(0);
sketch.noFill();
sketch.line(radiusMin, 0, radiusMax, 0);
sketch.noStroke();
sketch.fill('#ED8011');
sketch.ellipse(radiusMax, 0, 10);
sketch.fill('#75C8E6');
sketch.ellipse(radiusMin, 0, 10);
sketch.pop();
}
sketch.noStroke();
sketch.fill(0);
sketch.textStyle(sketch.BOLD);
sketch.textAlign(sketch.CENTER, sketch.CENTER);
sketch.textSize(12);
sketch.text("Low and High Temperatures, April 2022", 200, 350);
sketch.textStyle(sketch.NORMAL);
sketch.text("Denver", chartCenterX, chartCenterY);
}
})