int[] data = {3, 7, 5, 9, 4, 8, 2, 6, 10, 1}; // Positive integer values float sum = 0.0; float mean = 0.0; float maxDataValue; void setup() { size(800, 600); background(255); maxDataValue = max(data); // Calculate dimensions based on canvas size and data float barSpacingPercent = 0.02; float xOffsetPercent = 0.1; float yOffsetPercent = 0.1; float canvasWidth = width * (1 - 2 * xOffsetPercent); float canvasHeight = height * (1 - 2 * yOffsetPercent); float barSpacing = canvasWidth * barSpacingPercent / (data.length + 1); float xOffset = width * xOffsetPercent; float yOffset = height * yOffsetPercent; float maxBarHeight = canvasHeight; // Draw grid lines stroke(200); strokeWeight(1); // Draw horizontal grid lines int numOfHorizontalGridLines = 10; // Number of horizontal grid lines float horizontalGridSpacing = canvasHeight / numOfHorizontalGridLines; for (int i = 0; i <= numOfHorizontalGridLines; i++) { float y = yOffset + i * horizontalGridSpacing; line(xOffset, y, width - xOffset, y); } // Draw vertical grid lines int numOfVerticalGridLines = 10; // Number of vertical grid lines float verticalGridSpacing = canvasWidth / numOfVerticalGridLines; for (int i = 0; i <= numOfVerticalGridLines; i++) { float x = xOffset + i * verticalGridSpacing; line(x, yOffset, x, height - yOffset); } // Add x-axis labels fill(0); textAlign(CENTER, TOP); for (int i = 0; i <= data.length; i++) { float x = xOffset + i * barSpacing; text(i, x, height - yOffset + 10); } // Add y-axis labels textAlign(RIGHT, CENTER); for (int i = 0; i <= 10; i++) { float y = map(i, 0, 10, height - yOffset, yOffset); text(i, xOffset - 10, y); } // Drawing the bars and calculating mean float barWidth = canvasWidth / data.length - barSpacing; for (int i = 0; i < data.length; i++) { float barHeight = map(data[i], 0, maxDataValue, 0, maxBarHeight); float barX = xOffset + i * (barWidth + barSpacing); float barY = height - yOffset - barHeight; // Determine color based on value color barColor; if (data[i] % 2 == 0) { barColor = color(0, 255, 0, map(data[i], 0, maxDataValue, 0, 255)); // Green for even values } else { barColor = color(255, 0, 0, map(data[i], 0, maxDataValue, 0, 255)); // Red for odd values } fill(barColor); rect(barX, barY, barWidth, barHeight); // Calculate sum for mean sum += data[i]; } // Calculate mean mean = sum / data.length; // Draw mean line stroke(0, 0, 255); // Blue color for mean line float meanY = map(mean, 0, maxDataValue, height - yOffset, yOffset); line(xOffset, meanY, width - xOffset, meanY); // Add mean value label fill(0, 0, 255); textAlign(LEFT, CENTER); text("Mean: " + nf(mean, 0, 2), width - xOffset - 100, meanY); // Label x and y axes fill(0); textAlign(CENTER, CENTER); text("X Axis", width / 2, height - yOffset / 2); textAlign(CENTER, CENTER); text("Y Axis", xOffset / 2, height / 2); save("Assignment3.png"); }