2017-10-15 2 views
0

j'ai un tableau comprenant double:Créer un histogramme de tableau avec double

double[] myArray = {1.23455, 1.23456, 2.45673, 6.45678, 8.12938} 

Les chiffres dans le tableau et le nombre d'éléments dans le tableau varient. Comment puis-je créer un histogramme sur ce tableau? Je suis en train de créer des gammes en faisant quelque chose comme ceci:

double sizeOfRange = (max-min)/(numberOfRanges-1); 

Où max et min sont des valeurs max et min dans monTableau, mais à part que je suis complètement perdu sur la façon de le faire. Je suis très nouveau à Java, j'espère que la question est posée correctement.

+0

histogramme de quoi? ce qui est attendu sur les deux axes? –

Répondre

0

Je ne suis pas sûr que ce soit ce que vous voulez, mais il peut certainement vous aider si vous êtes entrée:

Double[] myArray = {1.23455, 1.23456, 2.45673, 6.45678, 8.56938, 3.65645, 5.65478, 2.54773, 9.63345}; 
    int nRanges = 3; 
    int[] buckets = new int[nRanges]; 
    double max = Collections.max(Arrays.asList(myArray)); 
    double min = Collections.min(Arrays.asList(myArray)); 
    double sizeOfRange = (max-min)/(nRanges - 1); 

    for (double elem : myArray){ 
     for (int i = 0; i < nRanges; i++){ 
      if ((elem >= sizeOfRange * i) && (elem < sizeOfRange * (i + 1))) 
       buckets[i]++; 
     } 
    } 

    for (int i = 0; i < nRanges; i++){ 
     System.out.println(sizeOfRange * i + " - " + sizeOfRange * (i + 1) + ": " + buckets[i]); 
    } 

Collections classe offre beaucoup de méthode utile, tout comme max et min. Ensuite, le noyau de ce code est de la ligne 8 à 13: à l'intérieur que for j'augmente la fréquence de la plage dans laquelle la valeur double correspondant peut être placée.