Facebook
From Adjowa Asamoah, 1 Month ago, written in Plain Text.
Embed
Download Paste or View Raw
Hits: 131
  1. int[] data = {3, 7, 5, 9, 4, 8, 2, 6, 10, 1}; // Positive integer values
  2.  
  3. float sum = 0.0;
  4. float mean = 0.0;
  5. float maxDataValue;
  6.  
  7. void setup() {
  8.   size(800, 600);
  9.   background(255);
  10.   maxDataValue = max(data);
  11.  
  12.   // Calculate dimensions based on canvas size and data
  13.   float barSpacingPercent = 0.02;
  14.   float xOffsetPercent = 0.1;
  15.   float yOffsetPercent = 0.1;
  16.   float canvasWidth = width * (1 - 2 * xOffsetPercent);
  17.   float canvasHeight = height * (1 - 2 * yOffsetPercent);
  18.   float barSpacing = canvasWidth * barSpacingPercent / (data.length + 1);
  19.   float xOffset = width * xOffsetPercent;
  20.   float yOffset = height * yOffsetPercent;
  21.   float maxBarHeight = canvasHeight;
  22.  
  23.   // Draw grid lines
  24.   stroke(200);
  25.   strokeWeight(1);
  26.  
  27.   // Draw horizontal grid lines
  28.   int numOfHorizontalGridLines = 10; // Number of horizontal grid lines
  29.   float horizontalGridSpacing = canvasHeight / numOfHorizontalGridLines;
  30.   for (int i = 0; i <= numOfHorizontalGridLines; i++) {
  31.     float y = yOffset + i * horizontalGridSpacing;
  32.     line(xOffset, y, width - xOffset, y);
  33.   }
  34.  
  35.   // Draw vertical grid lines
  36.   int numOfVerticalGridLines = 10; // Number of vertical grid lines
  37.   float verticalGridSpacing = canvasWidth / numOfVerticalGridLines;
  38.   for (int i = 0; i <= numOfVerticalGridLines; i++) {
  39.     float x = xOffset + i * verticalGridSpacing;
  40.     line(x, yOffset, x, height - yOffset);
  41.   }
  42.  
  43.   // Add x-axis labels
  44.   fill(0);
  45.   textAlign(CENTER, TOP);
  46.   for (int i = 0; i <= data.length; i++) {
  47.     float x = xOffset + i * barSpacing;
  48.     text(i, x, height - yOffset + 10);
  49.   }
  50.  
  51.   // Add y-axis labels
  52.   textAlign(RIGHT, CENTER);
  53.   for (int i = 0; i <= 10; i++) {
  54.     float y = map(i, 0, 10, height - yOffset, yOffset);
  55.     text(i, xOffset - 10, y);
  56.   }
  57.  
  58.   // Drawing the bars and calculating mean
  59.   float barWidth = canvasWidth / data.length - barSpacing;
  60.   for (int i = 0; i < data.length; i++) {
  61.     float barHeight = map(data[i], 0, maxDataValue, 0, maxBarHeight);
  62.     float barX = xOffset + i * (barWidth + barSpacing);
  63.     float barY = height - yOffset - barHeight;
  64.  
  65.     // Determine color based on value
  66.     color barColor;
  67.     if (data[i] % 2 == 0) {
  68.       barColor = color(0, 255, 0, map(data[i], 0, maxDataValue, 0, 255)); // Green for even values
  69.     } else {
  70.       barColor = color(255, 0, 0, map(data[i], 0, maxDataValue, 0, 255)); // Red for odd values
  71.     }
  72.     fill(barColor);
  73.     rect(barX, barY, barWidth, barHeight);
  74.  
  75.     // Calculate sum for mean
  76.     sum += data[i];
  77.   }
  78.  
  79.   // Calculate mean
  80.   mean = sum / data.length;
  81.  
  82.   // Draw mean line
  83.   stroke(0, 0, 255); // Blue color for mean line
  84.   float meanY = map(mean, 0, maxDataValue, height - yOffset, yOffset);
  85.   line(xOffset, meanY, width - xOffset, meanY);
  86.  
  87.   // Add mean value label
  88.   fill(0, 0, 255);
  89.   textAlign(LEFT, CENTER);
  90.   text("Mean: " + nf(mean, 0, 2), width - xOffset - 100, meanY);
  91.  
  92.   // Label x and y axes
  93.   fill(0);
  94.   textAlign(CENTER, CENTER);
  95.   text("X Axis", width / 2, height - yOffset / 2);
  96.   textAlign(CENTER, CENTER);
  97.   text("Y Axis", xOffset / 2, height / 2);
  98.  
  99.   save("Assignment3.png");
  100. }
  101.