I am using iOS charts plugin (line chart) and wish to style the chart values (the number above each point) to a decimal number.
The value is a double, but charts by default is rounding it and displaying it as an integer.
I have tried the following but not working:
let valueformatter = NumberFormatter()
valueformatter.numberStyle = .decimal
valueformatter.locale = Locale.current
lineChartDataSet.valueFormatter = valueformatter as? IValueFormatter
I have tried various other properties but non of them change the format of the number in the dataset.
How can I change the format of the displayed number?
Almost there, just need to add the following class:
//For old Charts version
//class ChartValueFormatter: NSObject, IValueFormatter {
//For Charts version 4.0.1
class ChartValueFormatter: NSObject, ValueFormatter {
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)!
}
}
Now use this as the number formatter:
let numberFormatter = NumberFormatter()
numberFormatter.numberStyle = .decimal
numberFormatter.locale = Locale.current
let valuesNumberFormatter = ChartValueFormatter(numberFormatter: numberFormatter)
lineChartDataSet.valueFormatter = valuesNumberFormatter
lineChartDataSet.valueFont = lineChartDataSet.valueFont.withSize(chartFontPointSize)