ios图表整数转换

时间:2017-02-16 11:31:34

标签: ios charts ios-charts

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

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

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

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

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

Screen shots

2 个答案:

答案 0 :(得分: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 :(得分:0)

您需要使用自定义格式化程序类

扩展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
    }

}

现在在您的代码中使用自定义类初始化条形值格式化程序。它将删除所有精度/法定值。

let chartDataSet = BarChartDataSet(values: <dataSetValues>, label: <stringValue>)
let valueFormatter = BarValueFormatter()
chartDataSet.valueFormatter = valueFormatter