图表的动态y轴

时间:2016-09-26 07:59:42

标签: ios swift logic ios-charts computation

我正在整合ios-charts。我想在json响应的基础上布局y-axis of graph dynamically。例如: - 如果json包含50个值,那么我将绘制10(50/5)+5 = 15 yaxis值。这15个值必须包含最小和最大json值。剩余的13个值必须在它们之间具有固定步长。我写了多个逻辑,无法提供正确的结果。我对这些想法持开放态度。

1 个答案:

答案 0 :(得分:1)

您需要找到最不常见的倍数,并将其作为选择正确值的基础。我在这里找到了一些不错的工作:Ray Wenderlich Algorithms

在上面的示例中,您将结束commonMultiple = 150originalCount是您必须开始的值的数量(50)。

然后我想这会是这样的。 values是从json创建的值数组。

var multipliedValues = [Int]()
for value in values {
    multipliedValues += [Int](repeating: value, count: commonMultiple/originalCount)
}

然后您就可以选择一个值的子集:

let numberOfSteps = (originalCount/5)+5
var yValues = [Int]()
for n in 0..<numberOfSteps{
    let index = n*commonMultiple/numberOfSteps
    yValues.append(multipliedValues[index])
}

然后最后一个棘手的部分是插入最低和最高值。也许是这样的事情:

let minValue = values.sorted().first!
if !yValues.contains(minValue) {
    let minIndex = multipliedValues.index(of: minValue)! / (commonMultiple/numberOfSteps)
    yValues[minIndex] = minValue
}
let maxValue = values.sorted().last!
if !yValues.contains(maxValue) {
    let maxIndex = multipliedValues.index(of: maxValue)! / (commonMultiple/numberOfSteps)
    yValues[maxIndex] = maxValue
}