- String dataString = "0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.2, 0, 0, 0, 0, 0, 0, 0, 0.4, 0.2, 8, 7.6, 0, 0, 0, 0, 0, 17.8, 18.6, 0, 0, 13.2, 4.8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.2, 21.6, 0, 0, 20, 2.4, 0, 0, 0, 0, 0, 0, 8, 0.4, 0, 0, 0, 0, 0, 1.2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4.6, 0.2, 0, 0, 0, 0.4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.2, 0.2, 0, 0, 0, 0, 0, 0, 4, 0, 1.6, 0, 0.8, 5.2, 0, 0, 0, 0.4, 0.8, 16, 0.6, 4.6, 0.4, 0, 0, 0.6, 0.2, 0, 0, 0.2, 0, 0, 7.2, 0.4, 3.4, 24.2, 2.8, 17, 0, 1.2, 0.4, 0.2, 0.2, 18.4, 0, 0.2, 11.4, 1.6, 3.8, 5.2, 2.4, 1.8, 0, 0, 0, 0, 2.4, 4, 0, 0, 0.6, 3.8, 11.8, 2.6, 20, 0.6, 0, 2.6, 0, 0, 1.6, 2.6, 1.4, 0, 0.2, 37.6, 2.4, 1.6, 0, 0, 6.6, 1.4, 6, 7, 0.6, 0.2, 0, 0, 0, 0, 5, 0, 0.6, 4.2, 0, 11.4, 8.8, 10.4, 0.2, 0, 0, 3.8, 11, 1.8, 0, 0.4, 0, 0, 0, 0, 0.6, 3.6, 8.2, 0, 0, 0, 0, 0, 0.8, 0, 16.8, 7, 0.2, 0, 0, 0, 0, 0, 0, 0, 1.6, 5.8, 1, 0.2, 0.2, 0.4, 1, 0, 0, 0, 1.2, 30.4, 0.2, 0, 0, 6.2, 15.6, 16.6, 0, 0, 2.4, 0.4, 0.4, 1.6, 0, 0, 2.4, 2, 0, 0, 0, 37.8, 12.2, 4.2, 0, 27.6, 11.8, 0, 0, 0, 0, 0, 2, 0.4, 0.8, 0.6, 0, 0, 1.2, 14.2, 4.2, 3.8, 0, 9.4, 0.2, 0, 0, 0, 0, 0, 0, 0, 0, 0.6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 16.4, 1.8, 0, 0, 0, 0, 0, 0, 0, 0.8, 0.2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4.6, 0, 0, 8, 0.8, 0, 0, 0, 0, 0.4, 0, 0, 0.4, 0, 0, 2.2, 0, 0, 0, 0, 0, 0.2, 5.8, 61.2, 3, 0.2, 0";
- // Function to convert the string data to an ArrayList of Floats
- ArrayList<Float> stringToFloatList(String data) {
- String[] stringArray = split(data, ",");
- ArrayList<Float> floatList = new ArrayList<Float>();
- for (int i = 0; i < stringArray.length; i++) {
- floatList.add(float(trim(stringArray[i])));
- }
- return floatList;
- }
- //Function to sanitise a ArayList of Floats
- ArrayList<Float> sanitise(ArrayList<Float> floatList) {
- ArrayList<Float> sanitisedData = new ArrayList<Float>();
- for (int i=0; i< floatList.size(); i++) {
- if (floatList.get(i) != float(0)) {
- sanitisedData.add(floatList.get(i));
- }
- }
- return sanitisedData;
- }
- //Function to find mean
- float mean(ArrayList<Float> array){
- float sum=0;
- float mean=0;
- for (int i=0; i<array.size(); i++){
- sum=sum+array.get(i);
- }
- mean= sum / array.size();
- return mean;
- }
- //function to find minimum
- float min(ArrayList<Float> array){
- float min = array.get(0);
- for (int i =1; i< array.size(); i++){
- if(array.get(i) < min){
- min = array.get(i);
- }
- }
- return min;
- }
- //function to find maximum
- float max(ArrayList<Float> array){
- float max = array.get(0);
- for (int i =1; i< array.size(); i++){
- if(array.get(i) > max){
- max = array.get(i);
- }
- }
- return max;
- }
- //Function to find median
- ArrayList<Float> median(ArrayList<Float> originalArray){
- ArrayList<Float> orderedArray = new ArrayList<Float>();
- ArrayList<Float> median = new ArrayList<Float>();
- ArrayList<Float> array = new ArrayList<Float>(originalArray);
- float min = 0;
- float arrayLength = array.size();
- while( array.size() > 0){
- min = min(array);
- orderedArray.add(min);
- array.remove(Float.valueOf(min));
- }
- if (arrayLength %2 == 1){
- median.add(orderedArray.get(int((arrayLength -1 )/2)));
- }
- else{
- median.add(orderedArray.get(int(arrayLength/2-1)));
- median.add(orderedArray.get(int(arrayLength/2)));
- }
- return median;
- }
- //FUnction to find Standard deviation
- float standardDeviation(ArrayList<Float> array){
- float mean = mean(array);
- float sum = 0;
- int arrayLength = array.size();
- float standardDev = 0;
- for (int i =0; i< array.size(); i++){
- sum = sum + (array.get(i)-mean)*(array.get(i)-mean);
- }
- standardDev = sqrt(sum/arrayLength);
- return standardDev;
- }
- // Function to find the index at which a value is in an array
- int findIndex(float[] array, float value) {
- for (int i = 0; i < array.length; i++) {
- if (array[i] == value) {
- return i;
- }
- }
- return -1; // Return -1 if the value is not found
- }
- //Function to find the mode
- ArrayList<Float> mode(ArrayList<Float> array){
- ArrayList<Float> values = new ArrayList<Float>();
- for(int l=0; l< array.size(); l++){
- if(!values.contains(array.get(l))){
- values.add(array.get(l));
- }
- }
- float[] times = new float[values.size()];
- for(int i=0; i < values.size() ; i++){
- for(int j=0; j< array.size(); j++){
- if(values.get(i) == array.get(j)){
- times[i] = times[i]+1;
- }
- }
- }
- ArrayList<Float> mode = new ArrayList<Float>();
- float max = 0;
- int condition = 0;
- int index = 0;
- while (condition == 0){
- max = max(times);
- index = findIndex(times, max);
- mode.add(values.get(index));
- times[index]=0;
- if( max(times) == max){
- condition = 1;
- }
- }
- return mode;
- }
- void setup() {
- size(520, 240);
- background(255);
- strokeWeight(height/200);
- fill(0);
- textSize(width/30);
- ArrayList<Float> floatList = stringToFloatList(dataString);
- ArrayList<Float> sanitisedData = sanitise(floatList);
- float mean = mean(sanitisedData);
- float min = min(sanitisedData);
- ArrayList<Float> median = median(sanitisedData);
- float standardDev = standardDeviation(sanitisedData);
- ArrayList<Float> mode = mode(sanitisedData);
- println("original array: " , floatList);
- println("sanitised data: ", sanitisedData);
- text("Analysis results: ", 20, height/10);
- text("value: ", width/2, height/10);
- println("mean: ", mean);
- text("mean: ", 20, height/10 + height/5);
- text(mean, width/2, height/10 +height/5);
- println("median: ", median);
- text("median: ", 20, height/10 + 2*height/5);
- for (int i = 0; i<median.size(); i++){
- text(median.get(i), width/2+i*width/(2*median.size()), height/10 + 2*height/5);
- }
- println("Standard Deviation: ", standardDev);
- text("Standard Deviation: ", 20, height/10 + 3* height/5);
- text(standardDev, width/2, height/10 + 3* height/5);
- print("mode: ", mode);
- text("mode: ", 20, height/10 + 4* height/5);
- for (int j= 0; j< mode.size(); j++){
- text(mode.get(j), width/2+ j*width/(2*median.size()), height/10 + 4* height/5);
- }
- line(10, height/40, width-20, height/40);
- line(10, height/5, width-20, height/5);
- line(10, 19*height/20, width-20, 19*height/20);
- line (width/2-20, height/40, width/2- 20, 19*height/20);
- line (10, height/40, 10, 19*height/20);
- line ( width-20, height/40, width-20, 19*height/20);
- }