2010-01-12 11 views
3

J'ai utilisé la charte Dojo pour créer un graphique Colonnes. Je suis très impressionné par cela jusqu'à présent, mais j'ai décidé que j'avais besoin d'un axe y logarithmique. Ne semble pas être supporté jusqu'ici, même si j'ai vu un blog entry indiquant qu'il était prévu à un moment donné.Echelle de l'axe logarithmique Dojo

Est-ce que quelqu'un sait que c'est possible en ce moment? Si ce n'est pas le cas, alors je suis heureux d'essayer d'écrire l'amélioration moi-même, donc si quelqu'un a quelques conseils sur par où commencer, ils seraient accueillis avec gratitude. Je pense que c'est le cas d'implémenter un nouveau type d'échelle, bien que je n'ai pas passé beaucoup de temps à creuser à travers la source pour le moment.

Merci, Martin.

Répondre

3

dojox.gfx n'a pas encore l'axe logarithmique.

Mise à jour: Une façon de le faire est de remapper des données le long de l'axe logarithmique, et d'utiliser l'axe linéaire avec des étiquettes personnalisées. Par exemple:

// we will transform our 'x' to a decadic logarithmic scale 

var LOG10 = Math.log(10); 

var data = [...]; // my data of {x, y} 
var transformedData = dojo.map(data, function(value){ 
    return { 
    x: Math.log(value.x)/LOG10, 
    y: value.y // 'y' is unchanged 
    }; 
}); 

// ... 

// add the axis and the data 
chart.addAxis("x", { 
    natural: true, 
    includeZero: true, 
    // our logarithmic labels 
    labels: [ 
    {value: 0, text: "1"}, 
    {value: 1, text: "10"}, 
    {value: 2, text: "100"}, 
    {value: 3, text: "1000"}, 
    {value: 4, text: "10^4"}, 
    {value: 5, text: "10^5"}, 
    {value: 6, text: "10^6"}, 
    {value: 7, text: "10^7"}, 
    {value: 8, text: "10^8"}, 
    {value: 9, text: "10^9"} 
    ] 
}); 
chart.addSeries("my data", transformedData); 

// ... 

Quelque chose comme ça va faire l'affaire. L'autre option consiste à utiliser la fonction d'étiquetage pour générer des étiquettes «logarithmiques» automatiquement.