Comment montrer que des nombres entiers (pas de décimales) dans le tableau de l'API x/y étiquettes de l'axe des
Je suis à l'aide d'un histogramme avec les Google Chart Api JS. Je suis l'affichage de certaines valeurs (total des commandes par jour) qui ne peuvent être représentés comme des nombres entiers.
Tout fonctionne très bien, sauf que lorsque l'un des tableaux que j'affiche a des valeurs qui sont trop faibles, comme 1 ou 2, il commence à montrer des décimales sur l'axe des ordonnées. Les décimales air stupide, b/c il est impossible d'avoir "la moitié" un ordre (qui est ce que je compte), et je voudrais le cacher, si possible.
- Je ne suis pas familier avec l'API Google chart, mais pouvez-vous demander
parseInt(val)
pour les numéros avant de les afficher? - Je ne suis pas sûr que je sais ce que tu veux dire, je suis déjà en leur fournissant que des services de renseignements lorsque la page est affichée. Les décimales apparaissent uniquement lorsque le nombre représenté est très petite, comme 1 ou 2.
- Sonne comme une virgule flottante erreur de quelque sorte, alors. Si oui,
parseInt(val)
est la bonne approche pour les éliminer. C'est le meilleur conseil que je puisse donner sans une instance spécifique à regarder. - Avez-vous jamais comprendre cela? J'ai eu le même problème.
- vous devriez être en mesure de fournir de décimales que le nombre de commandes "de toute façon - dans le cas de" nombre moyen de commandes " - mais d'afficher en tant que ints
Vous devez vous connecter pour publier un commentaire.
Remarque: Veuillez consulter https://stackoverflow.com/a/16036721/390977, comme ma réponse est incorrecte. (Je ne peux pas le supprimer car il a été accepté.)
Dans vos options, vous pouvez spécifier le numéro de mise en forme pour l'chxs valeur:
Ce utilise une valeur float (
f
) avec 0 décimales (f0
).Ref: Google Graphique à barres des Étiquettes de l'Axe des Styles chxs
Je n'ai pas assez de rep pour répondre à Ian Hunter poster directement, mais ce qui n'est le format de l'étiquette, mais ne définit pas les lignes de la grille à la même valeur que l'étiquette, qui peut avoir des résultats indésirables. Donc, disons que vous avez ces lignes de la grille:
10
7.5
5
2.5
0
Lorsque vous format de l'étiquette pour ne montrer que les entiers il montre ceci:
10
8
5
3
0
Mais ensuite vos données sur le graphe n'a pas de lien avec l'axe des étiquettes d'échelle. E. g Si vous avez une valeur de 3, il montre, en réalité, ci-dessus le '3' étiquettes, car le '3' étiquette est en fait 2.5
Malheureusement, la seule solution que je pouvais penser était de surveiller les min/max des plages de données affichées dans le graphique, puis appliquer un peu de logique pour définir le min/max selon combien y-échelle des étiquettes que j'ai, à ce qu'ils divisent sans résidus.
Ainsi, dans le cas ci-dessus, j'étais à
Ce serait lui donner les lignes de la grille de
12
8
6
4
0
Pas de décimales, et pas de problèmes avec les données qui ne sont pas en corrélation avec les étiquettes apposées sur le graphique.
utiliser l'option
comme dans
L'ajout de {format : 0} convertit le flotteur de tiques à des nombres entiers, mais les valeurs réelles sur les barres s'affichent de manière incorrecte.
La question principale est de Google API Graphiques suppose que vous voulez 5 quadrillage pour la plupart qui pourrait ne pas fonctionner pour vous donner entier tique valeurs.
Ajoutant ceci m'a bien rond tique valeurs -
source - https://groups.google.com/forum/#!topic/google-visualisation-api/4qCeUgE-OmU
minValue: 0
les options de l'axe, il doit prévenir les négatifs de passe.si vous ne souhaitez que des valeurs entières pour l'afficher, vous devez tenir compte du fait que google charts veut vous montrer au moins 5 lignes de la grille. En supposant que tous d'entre eux doit être un entier donne le graphique suivant:
Le plus simple est de modifier la gauche de l'axe vertical, avec Min 0, Max, comme un multiple de 5 (5, 10, 15, etc) en fonction de votre maximum prévu.
Dans mon cas, j'ai des valeurs allant de 0 à 600.
Dans ce cas, vous n'afficher 'ensemble de nombres.
Vous aurez besoin pour générer dynamiquement le javascript bien sûr.
Exemple De Code:
Je suis en utilisant le code suivant:
Simplement calculer votre valeur maximale, puis de définir les lignes du quadrillage.compter de cette valeur
Je suis en utilisant la Goyave Multiset que mes données. Cagy79 du truc, c'est le seul que j'ai pu obtenir un travail. J'ai aussi essayé de générer mes propres lignes à l'aide d'un IntStream, mais ils ont toujours des nombres fractionnaires pour certains des graphiques. Comme mentionné ci-dessus, il suffit de régler le format sera de créer un graphique où l'passez la souris sur la valeur et la ligne de quadrillage diffèrent.
Multiset articles = TreeMultiset.create();
Éléments ajoutés à l'aide .ajouter et .addAll
Assurez-vous que les éléments sont triés:
occurrences = Multisets.copyHighestCountFirst(articles);
Option de chaîne = "hAxis : { title : 'Count', quadrillage : { count:" +
((max >=12) ? 4 : max+1)
+ } }")
Je préfère le
gridlines: { count: -1 }
option, mais vous pouvez toujours spécifier explicitement les valeurs que vous voulez avecticks
. Cool, c'est qu'ils n'ont même pas à être espacé - vous pourriez le faire [1, 10, 100, 200, 500, 1000] si vous voulais:options: { vAxis: { ticks: [1,2,3,4,5,6,7,8,9,10] } }
En fonction de vos données, vous pouvez coder en dur ou l'utiliser seuils.
Pour tous ceux qui sont également à la recherche de la réponse, vous pouvez voir la réponse à cette question ici, qui utilisent les options de format.
Ne pouvez pas obtenir de Google Charts Axe de format décimal