我目前正在使用“图表”窗格。
我的应用程序显示了运动员成绩的条形图,其中包括:
我想收集不同组代表的数量。
可能是:10
像这样:
根据
Max()
和Min()
值之间的差异,我想更改粒度。这就是我现在所拥有的:
let resultTime = [2458, 3500, 3600] // Fake data -> 41min, 58min, 60 min
let dict = Dictionary(grouping: resultTime, by: { $0 / 60 }).map { ($0.key, $0.value.count) }
这样,我可以按分钟将字典分组。我懂了:
[(58, 1), (40, 1), (60, 1)]
我想将这些数据按2进行分组,以得到类似的结果:
[(60, 2), (40, 1)]
是否有可能使用
groupBy
进行粒度处理? 最佳答案
如@Alexander所说,解决方案是对by
函数进行舍入
您可以使用以下小功能来做到这一点:
func roundWithCoef(_ x : Double, coef: Int) -> Int {
return coef * Int(round(x / Double(coef)))
}
let dict = Dictionary(grouping: resultTime, by: { roundWithCoef(Double($0 / 60), coef: 4) }).map { ($0.key, $0.value.count) }
这样你就可以玩琴号了