2016-09-26 16 views
0

ios-chartsを統合しています。私はy-axis of graph dynamicallyをjsonレスポンスに基づいてレイアウトしたいと思っています。たとえば、 - jsonに50個の値が含まれている場合、10(50/5)+5 = 15 yaxisの値を描画します。これらの15の値には、最小値と最大値のjson値が含まれていなければなりません。残りの13の値はそれらの間に固定ステップを持つ必要があります。私は複数のロジックを書き、正しい結果を提供することができません。私はアイデアを公開しています。グラフの動的y軸

答えて

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 
} 
関連する問題