我在objc项目上使用ios Charts 3.0。我在stackoverflow上搜索了答案,但对我来说没有正确的结果。我在我的项目中使用地平线条形图和饼图并尝试使用
yAxis.valueFormatter = NSNumberFormatter()
yAxis.valueFormatter.minimumFractionDigits = 0
对于每个轴以及自定义格式化程序:
- (NSString *)stringForValue:(double)value
axis:(ChartAxisBase *)axis
{
return [@((NSInteger)value) stringValue];
}
这两种方式对我都不起作用。你们能帮忙解决这个问题吗?
答案 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