Comment ajouter des étiquettes de texte aux axes dans d3?
Par exemple, j'ai un graphique linéaire simple avec un axe x et y.
Sur mon axe des x, j'ai des graduations de 1 à 10. Je veux que le mot «jours» apparaisse en dessous afin que les gens sachent que l'axe des x compte les jours.
De même, sur l'axe des y, j'ai les nombres 1 à 10 sous forme de graduations, et je veux que les mots «sandwiches mangés» apparaissent sur le côté.
Existe-t-il un moyen simple de le faire?
la source
.attr("transform", "rotate(-90)")
fait tourner tout le système de coordination. Ainsi, si vous vous positionnez avec "x" et "y", vous devez échanger les positions par rapport à ce que j'attendais.Dans la nouvelle version de D3js (à partir de la version 3), lorsque vous créez un axe de graphique via une
d3.svg.axis()
fonction, vous avez accès à deux méthodes appeléestickValues
ettickFormat
qui sont intégrées à l'intérieur de la fonction afin que vous puissiez spécifier les valeurs pour lesquelles vous avez besoin des graduations et dans quoi format dans lequel vous voulez que le texte apparaisse:la source
Si vous voulez l'étiquette de l'axe y au milieu de l'axe y comme je l'ai fait:
-50
)chartHeight / 2
)Exemple de code:
Cela empêche la rotation de l'ensemble du système de coordonnées comme mentionné par lubar ci-dessus.
la source
Si vous travaillez dans d3.v4, comme suggéré, vous pouvez utiliser cette instance offrant tout ce dont vous avez besoin.
Vous voudrez peut-être simplement remplacer les données de l'axe X par vos «jours», mais n'oubliez pas d'analyser correctement les valeurs de chaîne et de ne pas appliquer la concaténation.
parseTime pourrait tout aussi bien faire l'affaire pour les jours avec un format de date?
violon avec css / js global
la source
D3 fournit un ensemble de composants de bas niveau que vous pouvez utiliser pour assembler des graphiques. Vous recevez les blocs de construction, un composant d'axe, la jointure de données, la sélection et le SVG. C'est votre travail de les assembler pour former un graphique!
Si vous voulez un graphique conventionnel, c'est-à-dire une paire d'axes, des étiquettes d'axes, un titre de graphique et une zone de traçage, pourquoi ne pas jeter un œil à d3fc ? il s'agit d'un ensemble open source de composants D3 de plus haut niveau. Il comprend un composant de graphique cartésien qui pourrait être ce dont vous avez besoin:
Vous pouvez voir un exemple plus complet ici: https://d3fc.io/examples/simple/index.html
la source
ou
la source