- float[][] data = {
- {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}
- };
- float arrayMax(float[][] array){
- float max = array[0][0];
- for (int i=0; i< array.length; i++){
- for (int j=0; j<array[i].length; j++){
- if(array[i][j]> max){
- max = array[i][j];
- }
- }
- }
- return max;
- }
- float arrayMin(float[][] array){
- float min = array[0][0];
- for (int i=0; i< array.length; i++){
- for (int j=0; j<array[i].length; j++){
- if(array[i][j] < min){
- min = array[i][j];
- }
- }
- }
- return min;
- }
- void printTable(float[][] data, int high, int large){
- fill(0);
- textSize(high/30);
- int margin=(40);
- int cols = data.length;
- int rows = data[0].length;
- int ySpacing = (high-margin)/(rows+1);
- int xSpacing = (large-margin)/(cols);
- for (int i=0; i< cols; i++){
- text("column: "+ i, margin + xSpacing*(i), margin );
- for(int j=0; j< rows; j++){
- text(data[i][j], margin + xSpacing*(i), margin + ySpacing*(1+j));
- }
- }
- }
- float average(float[] data){
- float sum = 0;
- float average= 0;
- for(int i=0; i < data.length; i++){
- sum= sum + data[i];
- }
- return average = sum/(float)data.length;
- }
- void printGraph(float[][] data, int large, int high, int x, int y){
- int margin = 40;
- float max = arrayMax( data);
- int xSpacing = (large-2*margin)/((data.length+1)*data[0].length);
- int ySpace = high - 2*margin;
- int yBase = high - margin;
- print(ySpace);
- //create an array with normalized values from data array
- float[][] normalizedArray = new float[data.length][data[0].length];
- for (int i=0; i<data.length; i++){
- for(int j=0; j<data[i].length; j++){
- normalizedArray[i][j] = data[i][j]/max;
- }
- }
- //draws the bars
- for (int i=0; i<data.length; i++){
- fill(0,0,(i+1)*(255/data.length));
- for( int j=0; j<data[i].length; j++){
- rect(x +margin + i*xSpacing+ j *(data.length+1)*xSpacing , yBase - (normalizedArray[i][j]*ySpace) , xSpacing , normalizedArray[i][j]* ySpace);
- }
- }
- //draw axis
- strokeWeight(3);
- textAlign(RIGHT);
- fill(0);
- textSize(high/30);
- line(x+ margin/2, margin, x+ margin/2, yBase);
- line(x + margin/2, yBase, x + large -margin, yBase);
- for (int i=0; i<max+1; i++){
- text(i, x + margin/4, yBase- i*(ySpace/max));
- }
- textAlign(CENTER);
- for(int i=0; i<data[0].length; i++){
- text( i*5, x+margin+ xSpacing +i*(data.length+1)*xSpacing , yBase + margin/2);
- }
- }
- void setup(){
- size(1600,800);
- background(255);
- float totalAverage=0;
- printTable(data, height, width/3);
- //use repetition to average on each experiment
- float[] averageArray = new float[data.length];
- for (int i =0; i < data.length; i++) {
- averageArray[i]= average(data[i]);
- }
- //use average function to calculate total average
- totalAverage= average(averageArray);
- float max = arrayMax(data);
- float min = arrayMin(data);
- print("Averages of each experiment: " );
- for (int i=0; i< averageArray.length; i++){
- print( averageArray[i] + " ");
- }
- println();
- println("total average: " + totalAverage);
- println("max: " + max);
- println("min: " + min);
- printGraph(data, 2*width/3, height, width/3, 0);
- }