ios图表整数转换

问题描述 投票:0回答:2

我在objc项目上使用ios Charts 3.0。我在stackoverflow上搜索了答案,但对我来说没有正确的结果。我在我的项目中使用地平线条形图和饼图并尝试使用

yAxis.valueFormatter = NSNumberFormatter()
yAxis.valueFormatter.minimumFractionDigits = 0

对于每个轴以及自定义格式化程序,使用:

- (NSString *)stringForValue:(double)value
                        axis:(ChartAxisBase *)axis
{
    return [@((NSInteger)value) stringValue];
}

这两种方式对我都不起作用。你能帮忙解决这个问题吗?

ios charts ios-charts
2个回答
4
投票

请尝试下面的代码。我在Swift写的并且不太了解Objective-C。我希望它有所帮助。我正在将它用于BarChart,它就像一个魅力。

let fmt = NumberFormatter()
fmt.numberStyle = .decimal
fmt.maximumFractionDigits = 0
fmt.groupingSeparator = ","
fmt.decimalSeparator = "."
yAxis.valueFormatter = DefaultAxisValueFormatter.init(formatter: fmt)

1
投票

您需要使用自定义格式化程序类扩展IValueFormatter协议,

import Foundation
import Charts

// Custom value formatter class
class BarValueFormatter : NSObject, IValueFormatter {

    // This method is  called when a value (from labels inside the chart) is formatted before being drawn.
    func stringForValue(_ value: Double,
                        entry: ChartDataEntry,
                        dataSetIndex: Int,
                        viewPortHandler: ViewPortHandler?) -> String {
        let digitWithoutFractionValues = String(format: "%.0f", value)
        return digitWithoutFractionValues
    }

}

现在在您的代码中使用自定义类初始化bar值formatter。它将删除所有精度/法定值。

let chartDataSet = BarChartDataSet(values: <dataSetValues>, label: <stringValue>)
let valueFormatter = BarValueFormatter()
chartDataSet.valueFormatter = valueFormatter
© www.soinside.com 2019 - 2024. All rights reserved.