我目前正在使用“图表”窗格。

我的应用程序显示了运动员成绩的条形图,其中包括:


  • X轴:重复次数/时间/回合/重量
  • Y轴:运动员人数


  • 我想收集不同组代表的数量。

    可能是:10
    像这样:
    ios - Swift-在数组中添加粒度(2 x 2、5 x 5,等等。)-LMLPHP

    根据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) }
    

    这样你就可以玩琴号了

    09-19 23:02