我正在整合ios-charts。我想在json响应的基础上布局y-axis of graph dynamically
。例如: - 如果json
包含50个值,那么我将绘制10(50/5)+5 = 15
yaxis值。这15个值必须包含最小和最大json值。剩余的13个值必须在它们之间具有固定步长。我写了多个逻辑,无法提供正确的结果。我对这些想法持开放态度。
答案 0 :(得分:1)
您需要找到最不常见的倍数,并将其作为选择正确值的基础。我在这里找到了一些不错的工作:Ray Wenderlich Algorithms
在上面的示例中,您将结束commonMultiple = 150
。 originalCount
是您必须开始的值的数量(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
}