2017-08-17 1 views
0

Comment dessiner un histogramme avec la fréquence en utilisant Plotly.js?Plotly.js - Histogramme de tracé avec la fréquence

Plotly.js fournit une API pour dessiner l'histogramme avec un ensemble de valeurs mais pas avec des valeurs de fréquence.

Vous pouvez trouver plus sur Plotly Histogrammes ici - https://plot.ly/javascript/histograms/

Voici un exemple:

Si l'ensemble de l'échantillon est {2, 3, 4, 5, 2, 2, 2, 3, 5}. parcelles Plotly de cette façon - https://codepen.io/sgsvenkatesh/pen/eEyyMJ

var x = [2, 3, 4, 5, 2, 2, 2, 3, 5]; 

var trace = { 
    x: x, 
    type: 'histogram', 
    }; 
var data = [trace]; 
Plotly.newPlot('myDiv', data); 

Mais c'est les données que j'ai

x = [2, 3, 4, 5]; 
y = [4, 2, 1, 1]; 

Cela représente que les valeurs 0-2 sont répétées 4 fois, 2-3 est répété 2 fois et ainsi sur.

Comment puis-je tracer ceci en utilisant Plotly.js?

Répondre

0

Vérifiez ce mode de représentation.

x = [2, 3, 4, 5]; 
 
y = [4, 2, 1, 1]; 
 

 
traces = []; 
 
for (var i = 0; i <= x.length - 1; i++) { 
 
    var yarray = new Array(y[i]).fill(y[i]); 
 
    var trace = {}; 
 
    if (i === 0) { 
 
     trace = { 
 
      x: yarray, 
 
      type: 'histogram', 
 
      name: 0 + " to " + x[i] 
 
     }; 
 
    } else if (i === x.length - 1) { 
 
     trace = { 
 
      x: yarray, 
 
      type: 'histogram', 
 
      name: x[i] + " and above" 
 
     }; 
 
    } else { 
 
     trace = { 
 
      x: yarray, 
 
      type: 'histogram', 
 
      name: x[i - 1] + " to " + x[i] 
 
     }; 
 
    } 
 
    traces.push(trace); 
 
} 
 

 

 
var data = traces; 
 
var layout = {barmode: "group"}; // there are three modes that can be set, "overlay", "stack", "group" 
 
Plotly.newPlot('myDiv', data, layout);
<script src="https://cdn.plot.ly/plotly-latest.min.js"></script> 
 
<div id="myDiv"></div>

+0

bien pensé, mais je crains que la solution n'échelle. Pour une fréquence supérieure à 500, la solution se révélerait préjudiciable à la performance. Dans mon cas, j'ai des numéros qui sont de l'ordre de 10^4. –

+0

@SGSVenkatesh Pas de problème, juste un coup de feu –