- 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");
- }