float[][] experiments = { {7.2, 7.5, 7.6, 7.5, 7.5, 7.4, 7.1, 7.0, 7.0, 6.9, 6.9, 7.1, 7.2, 7.3, 7.1, 7.1, 7.0, 7.2, 7.3, 7.3}, {7.4, 7.4, 7.5, 7.3, 7.6, 7.5, 7.5, 7.4, 7.3, 7.3, 7.2, 7.4, 7.5, 7.5, 7.5, 7.4, 7.2, 7.3, 7.5, 7.6}, {7.4, 7.5, 7.5, 7.6, 7.6, 7.5, 7.4, 7.5, 7.8, 7.5, 7.5, 7.6, 7.8, 7.8, 7.4, 7.8, 7.9, 7.4, 7.5, 7.5} }; void setup() { size(1200,500); colorMode(HSB,360,100,100); for(int i = 0; i < experiments.length; i++) { int time = 0; //Experiment color fill((i * 100) % 360, 100, 100); rect((i + 0.5f) * width/20, height/25, width/20,height/25); //Experiment label fill(0); text("Exp " + (i+1),(i + 0.65f) * width/20, 1.75f* height/25); for(int u = 0; u < experiments[i].length; u++) { //Data cell color fill(30, 30, 100); rect((i + 0.5f) * width/20, (u+2) * height/25, width/20,height/25); //Data value text fill(0); text(experiments[i][u],(i + 0.6f) * width/20, (u+2+0.85f) * height/25); //Bar graph color fill((i * 100) % 360, 100, 70); rect((u + 4.75f) * width/25 + i * width/100, height/25 + (height * 0.84f - height * 0.84f * (experiments[i][u]-5f)/3f), width/120, height * 0.84f * (experiments[i][u]-5f)/3f); //Time text for the second experiment if(i == 1) { fill(0); text(time, (u+4.75f+i*0.25f) * width/25, height * 0.9f); } time += 5; } } fill(0); textSize(20); text("pH Level by Time", width/2,height*0.05f); //Calculating analysis data ArrayList experiment_averages = new ArrayList(); Float overall_average = 0f; for(int i = 0; i < experiments.length; i++) { experiment_averages.add(average(experiments[i])); } overall_average = (experiment_averages.get(0) + experiment_averages.get(1) + experiment_averages.get(2))/3; //Displaying analysis data println(experiment_averages); println(overall_average); println(maximum(experiments)); println(minimum(experiments)); textSize(14); text("Avg: " + overall_average + " Min: "+ minimum(experiments) + " Max: " + maximum(experiments),width/35,height*0.95f); save("Problem_4.png"); } // Function to calculate the average value of a set of data float average(float[] data) { float sum = 0; for (int i = 0; i < data.length; i++) { sum += data[i]; } return sum / data.length; } // Function to find the maximum value in a multidimensional array float maximum(float[][] data) { float max = data[0][0]; // Initialize max with the first element of the array for (int i = 0; i < data.length; i++) { for (int j = 0; j < data[i].length; j++) { if (data[i][j] > max) { max = data[i][j]; } } } return max; } // Function to find the minimum value in a multidimensional array float minimum(float[][] data) { float min = data[0][0]; // Initialize min with the first element of the array for (int i = 0; i < data.length; i++) { for (int j = 0; j < data[i].length; j++) { if (data[i][j] < min) { min = data[i][j]; } } } return min; }