d3 marques de graduation sur les nombres entiers
J'ai un d3 graphique à barres dont les valeurs vont de 0 à 3. Je voudrais de l'axe y pour afficher uniquement les valeurs de type entier, qui, je peux le faire par
var yAxis = d3.svg.axis().scale(y).orient("right").tickFormat(d3.format("d"));
Cependant, il y a encore des marques de graduation à la non-entier marques. Réglage de la tique format ne cache ces étiquettes. Je peux définir explicitement le nombre de tiques ou de la tique valeurs, mais ce que je voudrais faire est de simplement être en mesure de préciser que les graduations apparaissent uniquement à des valeurs entières. Est-ce possible?
- Double Possible de Comment faire pour limiter d3.svg.axe d'étiquettes entières?
Vous devez vous connecter pour publier un commentaire.
Vous pourriez ajouter .les tiques(4) et .tickSubdivide(0) comme je l'ai fait ci-dessous:
.tickSubdivide(0)
devrait faire l'affaire. Avez-vous des valeurs entières dans vos données? Vous pouvez essayer de faire de la d3.format("d") ou d3.format("f") le long de avec le .tickSubdivide. Assurez-vous également d'effacer le cache du navigateur. Il est exact que les .tickPadding est pas pertinente ici.La bonne solution est de récupérer les tiques à l'aide de
.les tiques()
méthode, de les filtrer pour ne garder que les entiers et les passer à.tickValues()
:Pour l'intégralité ici est l'explication pourquoi d'autres solutions sont mauvaises:
@BoomShakalaka solution utilise
.tickSubdivide()
méthode, qui n'existe plus.@cssndrx et @kris solutions vous forcer à préciser le nombre de tiques, de sorte qu'il ne fonctionnera pas dans le cas générique.
Vous pouvez par programmation à définir le nombre de tiques à
data.length - 1
(ce qui résout le problème que vous aviez pour le petit nombre de tiques ainsi)À partir de la liste de toutes les solutions, je n'ai pas été en mesure de se débarrasser des graduations.
enlever les étiquettes, mais pas les tiques.
Je propose donc d'appliquer un seuil sur les tiques(). Si moins de 4 il est alors placé à la limite de lui-même (0,1,2,3). Est fait avec:
});
Un jsfiddle est disponible à partir de https://jsfiddle.net/PBrockmann/k7qnw3oj/
Laissez-moi savoir si il existe une solution plus simple.
Ce qui concerne
Utilisé cette ASTUCE pour faire ce travail sur des graphiques dynamiques (1 ou plusieurs graphiques sur la page)