2017-08-23 2 views
0

Le problème que j'ai est que j'ai des graphiques qui devraient toujours montrer une gamme fixe de XValues ​​disons toutes les 24 heures dans un jour, mais le graphique montre seulement les XValues ​​jusqu'à et à partir du point de la première et dernière YValue , c'est-à-dire si j'ai deux événements Y, disons 2h et 15h, au lieu de montrer les 24 heures entières, cela commencera à 2h et se terminera à 15h.MPAndroidChart affiche la plage spécifiée de XValues ​​même s'il n'y a pas YValue correspondant?

Je pense que cela a quelque chose à voir avec la nouvelle façon de gérer XValues ​​via IAxisValueFormatter, car cela fonctionnait bien lorsque nous pouvions ajouter des valeurs X et Y à un ChartData. Un truc pour contourner ce problème est d'ajouter des valeurs YValues ​​vides à la première et à la dernière heure dans mes valeurs 0, mais cela pose un autre problème: peu importe ce que je définis le minimum dans LeftAxis, il commence à afficher des valeurs négatives en -15 au lieu de 0).

Existe-t-il un moyen officiel de le faire? J'ai beaucoup étudié ce sujet et je pense à revenir à une version antérieure de la bibliothèque où je pourrais utiliser l'ancienne méthode. Edit: Juste pour clarifier le problème n'a rien à voir avec les étiquettes, mais avec le début et la fin du graphique dans X, il est en train de rejeter la gamme de X qui n'a pas de YValues ​​que je comprendre a du sens mais cela rend les résultats laids dans certains cas.

Répondre

1

Vous pouvez utiliser la méthode setLabelCount() pour forcer l'axe à étiquettes selon dessiner le compte que vous spécifiez

Selon la documentation:

setLabelCount(int count, boolean force)

@param count: la nombre d'étiquettes d'axes y qui doivent être affichées

@param force si elle est activée, le nombre d'étiquettes de jeu sera forcé, ce qui signifie que le nombre spécifié exact des étiquettes sera tiré au sort et uniformément répartis le long de l'axe - cela pourrait provoquer des étiquettes pour avoir des valeurs inégales

Et le setLabelCount méthode est définie ci-dessous

public void setLabelCount(int count) { 

    if (count > 25) 
     count = 25; 
    if (count < 2) 
     count = 2; 

    mLabelCount = count; 
    mForceLabels = false; 
} 

Vous pouvez utiliser setLabelCount() avec setAxisMaximum() et setAxisMinimum()

Par exemple:

axis.setLabelCount(24, true); 
axis.setAxisMaximum(24f); 
axis.setAxisMinimum(0f); 

Cela sélectionnons les valeurs 0-24 quel que soit l'axe Y valeurs

+0

J'utilise le IAxisValueFormatter déjà, cette partie travaille, mais forçant la le nombre d'étiquettes ne fonctionne pas pour ce que j'essaie de faire, je veux avoir 24 heures dans X, mais montrer seulement 6 étiquettes pour éviter qu'il ne soit trop surpeuplé, peu importe si j'essaye de forcer 24 étiquettes par exemple je reçois toujours le problème de Xvalues ​​commençant et finissant sur le premier et le dernier YValue. – PedroMVU

+1

Vous pouvez utiliser 'setLabelCount()' avec 'setAxisMaximum()' et 'setAxisMinimum()'.Cela va dessiner toutes les valeurs en fonction du nombre que vous spécifiez dans 'setLabelCount()' à partir de la valeur minimale à la valeur maximale –

+0

Cela fonctionne, merci beaucoup. – PedroMVU