web-dev-qa-db-fra.com

Flot avec axe "String"

Lorsque j'utilise flot, j'aimerais avoir un axe x basé sur une chaîne. Par exemple, j'ai une liste de clients "Bob", "Chris", "Joe" et je voudrais tracer leurs revenus sur l'axe Y. (ceci est un graphique à barres)

Il semble à première vue que flot ne supporte que les types numériques sur l'axe des x. Est-ce vrai?

50
Chris Muench

@ Matt est proche, mais il serait plus logique d'utiliser simplement l'option ticks pour spécifier directement quels ticks doivent avoir quelles étiquettes:

var options = {

...
  xaxis: {
    ticks: [[0,'Bob'],[1,'Chris'],[2,'Joe']]
  }
...

};

[~ # ~] éditez [~ # ~] : il ressemble à this (J'ai ajouté plus de données que d'étiquettes, mais vous avez eu l'idée).

84
Ryley

Le plugin Categories (jquery.flot.categories.js) le fera très bien, afin que les données puissent être formatées comme ceci:

var data = [ ["January", 10], ["February", 8], ["March", 4], ["April", 13], ["May", 17], ["June", 9] ];

et tracer comme ceci: enter image description here

Voir: http://www.flotcharts.org/flot/examples/categories/index.html

18
ak112358

Vous devriez pouvoir le faire en utilisant l'option tickFormatter selon cette question . Je ne l'ai pas essayé moi-même, mais essayez ceci:

var xAxisLabels = ['Bob', 'Chris', 'Joe'];    
function xAxisLabelGenerator(x){
    return xAxisLabels[x];
}

var plot = $.plot($("#placeholder"), { 
    // snip other options...
    xaxis: {
       transform: xAxisLabelGenerator,
       tickFormatter: xAxisLabelGenerator 
    }
});

Cela signifie que les valeurs x réelles doivent être 0, 1, 2, ...

17
Matt Ball