2017-06-28 3 views
2

J'utilise le plugin pour les cartes iOS (graphique linéaire) et je souhaite que les valeurs du graphique (le nombre au-dessus de chaque point) soient représentées par un nombre décimal.iOS Charts ValueFormatter

La valeur est un double, mais les diagrammes par défaut l'arrondissent et l'affichent sous la forme d'un nombre entier.

J'ai essayé ce qui suit, mais ne fonctionne pas:

let valueformatter = NumberFormatter() 
    valueformatter.numberStyle = .decimal 
    valueformatter.locale = Locale.current 
    lineChartDataSet.valueFormatter = valueformatter as? IValueFormatter 

J'ai essayé diverses autres propriétés, mais non de les changer le format du numéro dans l'ensemble de données.

Comment puis-je changer le format du numéro affiché?

Répondre

4

Presque là, juste besoin d'ajouter la classe suivante:

class ChartValueFormatter: NSObject, IValueFormatter { 
    fileprivate var numberFormatter: NumberFormatter? 

    convenience init(numberFormatter: NumberFormatter) { 
     self.init() 
     self.numberFormatter = numberFormatter 
    } 

    func stringForValue(_ value: Double, entry: ChartDataEntry, dataSetIndex: Int, viewPortHandler: ViewPortHandler?) -> String { 
     guard let numberFormatter = numberFormatter 
      else { 
       return "" 
     } 
     return numberFormatter.string(for: value)! 
    } 
} 

maintenant l'utiliser comme formatter numéro:

let numberFormatter = NumberFormatter() 
numberFormatter.numberStyle = .decimal 
numberFormatter.locale = Locale.current 
let valuesNumberFormatter = ChartValueFormatter(numberFormatter: numberFormatter) 
lineChartDataSet.valueFormatter = valuesNumberFormatter 
lineChartDataSet.valueFont = lineChartDataSet.valueFont.withSize(chartFontPointSize) 
+0

Merci beaucoup. Ce code change les nombres dans le graphique. Est-il possible de formater xAxis.valueFormatter? –

+0

pouvez-vous me dire que dois-je faire ce type 10.000% de données en utilisant votre méthode de formatage de nombre. –

+0

@ ronak-patel ne sais pas ce que vous voulez dire - peut-être essayer d'utiliser .percentstyle pour le numéroStyle –