Ios 在图表中格式化数字
如何格式化图表折线图中显示的数据?默认情况下,数据显示为double,但我希望它显示为intIos 在图表中格式化数字,ios,swift,ios-charts,Ios,Swift,Ios Charts,如何格式化图表折线图中显示的数据?默认情况下,数据显示为double,但我希望它显示为int let pre = [20.0, 4.0, 6.0, 3.0, 12.0, 16.0] for i in 0..<pre.count { let preDataEntry = ChartDataEntry(value: pre[i], xIndex: i) preEntries.append(preDataEntry) } let preChartDataSet = LineCh
let pre = [20.0, 4.0, 6.0, 3.0, 12.0, 16.0]
for i in 0..<pre.count {
let preDataEntry = ChartDataEntry(value: pre[i], xIndex: i)
preEntries.append(preDataEntry)
}
let preChartDataSet = LineChartDataSet(yVals: preEntries, label: "Pre")
lineChartView.data = lineChartData
let pre=[20.0,4.0,6.0,3.0,12.0,16.0]
对于0..中的i,您可以使用一些格式化程序属性:
ChartDataSet中的valueFormatter
ChartYAxis中的格式化程序:
/// the formatter used to customly format the y-labels
public var valueFormatter: NSNumberFormatter?
/// the formatter used to customly format the y-labels
internal var _defaultValueFormatter = NSNumberFormatter()
应该足够了您可以使用一些格式化程序属性:
ChartDataSet中的valueFormatter
ChartYAxis中的格式化程序:
/// the formatter used to customly format the y-labels
public var valueFormatter: NSNumberFormatter?
/// the formatter used to customly format the y-labels
internal var _defaultValueFormatter = NSNumberFormatter()
对于SWIFT 3,应该足够固定
YAxisValueFormatter.swift
import Foundation
import Charts
class YAxisValueFormatter: NSObject, IAxisValueFormatter {
let numFormatter: NumberFormatter
override init() {
numFormatter = NumberFormatter()
numFormatter.minimumFractionDigits = 1
numFormatter.maximumFractionDigits = 1
// if number is less than 1 add 0 before decimal
numFormatter.minimumIntegerDigits = 1 // how many digits do want before decimal
numFormatter.paddingPosition = .beforePrefix
numFormatter.paddingCharacter = "0"
}
/// Called when a value from an axis is formatted before being drawn.
///
/// For performance reasons, avoid excessive calculations and memory allocations inside this method.
///
/// - returns: The customized label that is drawn on the axis.
/// - parameter value: the value that is currently being drawn
/// - parameter axis: the axis that the value belongs to
///
public func stringForValue(_ value: Double, axis: AxisBase?) -> String {
return numFormatter.string(from: NSNumber(floatLiteral: value))!
}
}
创建YAxisValueFormatter
类,并将对象分配给图形leftAxis
// Number formatting of YAxis
chartView.leftAxis.valueFormatter = YAxisValueFormatter()
针对SWIFT 3进行了修复
YAxisValueFormatter.swift
import Foundation
import Charts
class YAxisValueFormatter: NSObject, IAxisValueFormatter {
let numFormatter: NumberFormatter
override init() {
numFormatter = NumberFormatter()
numFormatter.minimumFractionDigits = 1
numFormatter.maximumFractionDigits = 1
// if number is less than 1 add 0 before decimal
numFormatter.minimumIntegerDigits = 1 // how many digits do want before decimal
numFormatter.paddingPosition = .beforePrefix
numFormatter.paddingCharacter = "0"
}
/// Called when a value from an axis is formatted before being drawn.
///
/// For performance reasons, avoid excessive calculations and memory allocations inside this method.
///
/// - returns: The customized label that is drawn on the axis.
/// - parameter value: the value that is currently being drawn
/// - parameter axis: the axis that the value belongs to
///
public func stringForValue(_ value: Double, axis: AxisBase?) -> String {
return numFormatter.string(from: NSNumber(floatLiteral: value))!
}
}
创建YAxisValueFormatter
类,并将对象分配给图形leftAxis
// Number formatting of YAxis
chartView.leftAxis.valueFormatter = YAxisValueFormatter()
在预数组中给定整数值如果不起作用,则需要更改lineChartView类的格式。我尝试过,但它说“无法为”[Int]类型的值下标”如果不起作用,则在预数组中给定整数值,您需要更改lineChartView类中的格式。我尝试过,但它显示“无法为“[Int]”类型的值下标”如何为bar value执行此操作?如何为bar value执行此操作?