iOS图表ValueFormatter

问题描述 投票:3回答:3

我正在使用iOS图表插件(折线图),并希望将图表值(每个点上方的数字)设置为十进制数字。

该值为double,但默认情况下,图表将其舍入并将其显示为整数。

我尝试过以下但没有工作:

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

我尝试过各种其他属性,但是没有更改数据集中数字的格式。

如何更改显示的数字格式?

ios swift ios-charts
3个回答
10
投票

几乎就在那里,只需要添加以下类:

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)!
    }
}

现在使用它作为数字格式化程序:

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

2
投票
   lineChartDataSet.valueFormatter = DefaultValueFormatter(decimals: 2)

2
投票
 let data = PieChartData(dataSet: set) 

 let formatter = NumberFormatter() 
 formatter.numberStyle = .percent 
 formatter.maximumFractionDigits = 2 
 formatter.multiplier = 1.0 
 formatter.percentSymbol = "%" 
 formatter.zeroSymbol = "" 
 data.setValueFormatter(DefaultValueFormatter(formatter: formatter))

0
投票

这对我有用:

斯威夫特5

let valFormatter = NumberFormatter()
valFormatter.numberStyle = .currency
valFormatter.maximumFractionDigits = 2
valFormatter.currencySymbol = "$"

lineChartPrice.leftAxis.valueFormatter = DefaultAxisValueFormatter(formatter: valFormatter)
© www.soinside.com 2019 - 2024. All rights reserved.