0
我正在整合ios-charts。我想根据json响应来布局y-axis of graph dynamically
。例如: - 如果json
包含50个值,那么我将绘制10(50/5)+5 = 15
yaxis值。这15个值必须包含最小和最大json值。剩下的13个值必须在它们之间有固定的步长。我写了多个逻辑,并没有提供正确的结果。我对想法持开放态度。图表的动态y轴
我正在整合ios-charts。我想根据json响应来布局y-axis of graph dynamically
。例如: - 如果json
包含50个值,那么我将绘制10(50/5)+5 = 15
yaxis值。这15个值必须包含最小和最大json值。剩下的13个值必须在它们之间有固定的步长。我写了多个逻辑,并没有提供正确的结果。我对想法持开放态度。图表的动态y轴
您需要找到最小公倍数,并以此为基础来挑选出正确的值。我在这里找到了一些不错的工作: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
}