1

如何格式化图表折线图中显示的数据?默认情况下,数据显示为 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 = LineChartDataSet(yVals: preEntries, label: "Pre")
lineChartView.data = lineChartData

在此处输入图像描述

4

2 回答 2

8

为 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()
于 2017-01-28T08:35:06.067 回答
4

您可以使用一些格式化程序属性:

valueFormatterChartDataSet

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()

应该够了

于 2015-12-15T08:04:49.337 回答