xxxxxxxxxx
48
let penguinData;
let species = ['Adelie', 'Chinstrap', 'Gentoo'];
let traits = {};
function preload() {
penguinData = loadTable('palmerpenguins_extended.csv', 'csv', 'header');
}
function setup() {
createCanvas(800, 600);
background(240);
// Analyze data and count trait occurrences
for (let row of penguinData.rows) {
let speciesName = row.get('species');
if (!traits[speciesName]) traits[speciesName] = {};
countTrait(speciesName, 'diet', row.get('diet'));
countTrait(speciesName, 'island', row.get('island'));
countTrait(speciesName, 'health', row.get('health_metrics'));
// Add more traits as needed
}
// Draw trait clouds for each species
for (let i = 0; i < species.length; i++) {
drawTraitCloud(species[i], 200 + i * 250, 300);
}
}
function countTrait(species, traitType, value) {
if (!traits[species][traitType]) traits[species][traitType] = {};
traits[species][traitType][value] = (traits[species][traitType][value] || 0) + 1;
}
function drawTraitCloud(species, x, y) {
textAlign(CENTER, CENTER);
fill(0);
textSize(24);
text(species, x, y - 150);
for (let traitType in traits[species]) {
for (let value in traits[species][traitType]) {
let size = map(traits[species][traitType][value], 0, 100, 12, 36);
textSize(size);
text(value, x + random(-100, 100), y + random(-100, 100));
}
}
}