54 votes

d3.js & nvd3.js - Comment définir la plage de l'axe des y

Je suis en train de définir l'axe y de gamme de la carte de 1 à 100.

Consulté la documentation de l'API et a trouvé une solution possible avec l'axe.tickValues comme on le voit ici https://github.com/mbostock/d3/wiki/SVG-Axes#wiki-tickValues

Cependant, l'utilisation de l'option ne fonctionne pas. La lecture de la documentation de la page liée ci-dessus au titre de l'axe.tickSize, la ligne suivante, a été repéré

La fin tiques sont déterminées par les associés à l'échelle du domaine de mesure, et font partie de l'généré chemin de domaine plutôt que d'une tique ligne

Donc je le réglage de la min et max de la gamme ne peut pas être fait par le biais de l'option d'Axe.

Toutes les idées sur où je peux spécifier la plage?

78voto

Viet Points 1114

Trouvé une solution.

L’ajout de .forceY([0,100]) à l’instanciation du graphique oblige l’axe à prendre la plage spécifiée dans le tableau.

De l'exemple ici http://nvd3.org/livecode/#codemirrorNav

L’ajout de .forceY([0,100]) à la variable graphique fonctionne.

32voto

Bob Monteverde Points 971

Comme le nom le suggère, ce ajoute les valeurs dans le tableau de votre y de domaine, il ne permet pas de définir l'axe de domaine à [0,100]. Donc, si vous réglez ce paramètre sur [0,100] et vos données du domaine est de -10 à 110, le domaine sera [-10,110]. Maintenant, si vous voulez que le nom de domaine [0,100] même si vos données est plus grand, vous pouvez utiliser le graphique.yDomain([0,100]) ... MAIS en général, vous voulez que votre domaine d'inclure ou de vos données, je vous conseille vivement de l'aide graphique.forceY au lieu de graphique.yDomain. Comme vous le verrez, une des utilisations les plus courantes pour forceY est forceY([0]) pour 0 toujours dans le domaine.

L'espoir qui vous aide à comprendre ce que la fonction est en train de faire, et arboc7, cela doit expliquer pourquoi il ne nt à la préparation de la gamme plus petit que le jeu de données.

10voto

Pierre-Yves V. Points 41

Pour les graphiques à aires empilées, .forceY ([0,100]) ne fonctionne pas. Utilisez à la place .yDomain ([0,100])

7voto

sepans Points 193

Si vous voulez définir le domaine y (la plage de nombres à afficher), pour un graphique à aires empilées

nv.models.stackedAreaChart().x(function(d) {...}).y(function(d) {...}).yDomain([0, maxY]).width(). etc.

a travaillé pour moi.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X