μλ
νμΈμ!
LineChartView λ°μ΄ν°(ChartData)λ₯Ό μ
λ°μ΄νΈνκ³ νμ¬ μμΉμμ μ λλ©μ΄μ
λ LineChartViewλ₯Ό λ€μ 그리λ λ°©λ²μ΄ μμ΅λκΉ?
appFigures μμ© νλ‘κ·Έλ¨μμμ²λΌ.
κ°μ¬ ν΄μ.
μ¬μ€ μ΄λ―Έ μκ°νκ³ κ΅¬ννλ €κ³ νλ κΈ°λ₯μ
λλ€.
μ°λ¦¬λ μ§κΈ λ§μ κ²μ κ°μ§κ³ μμ΅λλ€. κ·Έλμ κ·Έ λμ μ΄κ²μ΄ λΉμ μκ² μ λ§ μ€μνλ€λ©΄ λ€μκ³Ό κ°μ΄ ν μ μμ΅λλ€.
λ°μ΄ν° μΈνΈ _A_, λ°μ΄ν° μΈνΈ _B_ λ° 0
μ 1
μ¬μ΄μ _phase_ κ°μ μ¬μ©νλ ν¨μλ₯Ό λ§λλλ€.
μ΄ κΈ°λ₯μ λ€μμ μνν©λλ€.
C[i] = (B[i] - A[i]) * phase + A[i]
μ΄μ 0
μμ 1
κΉμ§μ κ°λ¨ν μ«μμ μ λλ©μ΄μ
μ μ μ©νκ³ "from" λ°μ΄ν° μΈνΈ λ° "to" λ°μ΄ν° μΈνΈμ ν¨κ» ν¨μμ μ λ¬ν΄μΌ ν©λλ€. κ²°κ³Όλ μ°¨νΈ λ³΄κΈ°λ‘ μ λ¬λμ΄μΌ ν©λλ€ :-)
μ°¨νΈμμ μ λλ©μ΄μ μ νΈλ¦¬ν°λ₯Ό μ¬μ©ν μλ μμ΅λλ€. μ΄ μ νΈλ¦¬ν°λ μ¬μ μ 물건μ ν¬ν¨νμ¬ μ΄λ―Έ μ«μμ μ λλ©μ΄μ μ μ μ©ν μ μμ΅λλ€.
κ·Έλμ κ·Έκ²μ κ±°μ μΌμ΄ν¬μ 볡μμμ΄κ³ , λ΄κ° ν μ μλ ν 빨리 μ΄κ²μ λΌμ΄λΈλ¬λ¦¬μ μΆκ°ν κ³νμ λλ€. κ·Έλ¬λ μ μ΄λ κ·Έ λμμλ ν΄κ²°μ± μ΄ μμ΅λλ€ ;-)
μλ νμΈμ! μ΄λ―Έ ꡬνλ κΈ°λ₯μΈκ°μ?
λ°μ΄ν° μΈνΈμ μ κ°μ μΆκ°νκ³ νκ³μ μ μμΉλ₯Ό ββλ³κ²½νλ μ λλ©μ΄μ μ΄ νμν©λλ€.
μλ νμΈμ, μ λ νμ΄ μ°¨νΈμμ λ°μ΄ν° λ³κ²½ μ λλ©μ΄μ μ μ μ©νλ €κ³ ν©λλ€. μ΄λ―Έ μΈκΈν κΈ°λ₯μ΄ μμ§λ§ "0μμ 1λ‘ κ°λ¨ν μ«μμ μ λλ©μ΄μ ν¨κ³Όλ₯Ό μ£Όλ" λ°©λ²μ μ°Ύλ λ° μ΄λ €μμ κ²ͺκ³ μμ΅λλ€. μ΄μ λν μκ°μ΄ μμ΅λκΉ? κ°μ¬ ν΄μ!
μ¬λ³΄μΈμ! κΈ°λ₯μ΄ μ΄λ―Έ ꡬνλμ΄ μμ΅λκΉ?
μ΄ κΈ°λ₯μ λν μ§μμ μΆκ°νκ³ μΌλΆ μν κΈ°λ₯μ λ°λΌ κ°λ¨ν κ°μ 보κ°νλ μ’μ λ°©λ²μ μ°Ύκ³ μμ΅λλ€(ν΄κ²° λ°©λ²μ©). λͺ¨λ μ λλ©μ΄μ λΌμ΄λΈλ¬λ¦¬λ 보기 λλ μμ±μμ μλνλ κ²μ²λΌ 보μ΄μ§λ§ λ¨μν μ«μμ κ°μ "μ λλ©μ΄μ "νκ³ μΆμ΅λλ€. λ¨μν΄μΌ νλ κ² κ°κ΅°μ. μ κ° μλͺ»λ κ³³μ μ°Ύκ³ μλ κ²μ μλκΉμ?
λ΄ μ루μ μ 곡μ ν μλ κ²μλ¬Όμ λ³΄κ³ μΆμ μλ μμ΅λλ€. λλ κ·Έκ²μ΄ μλ²½κ³Όλ κ±°λ¦¬κ° λ©λ€λ κ²μ μκ³ μμ§λ§ μλνλ κ² κ°μ΅λλ€. http://stackoverflow.com/questions/34730917/animating-a-double-from-0-to-1-in-swift-over-a-specified-interval/34774113#34774113
@apiejh λΉ λ₯Έ λ΅λ³ κ°μ¬ν©λλ€. μ λ§ κ°μ¬ν©λλ€. λλ μ΄κ²μ νμ΄λ¨Έ κΈ°λ₯μΌλ‘ μλμν¬ μ μμλ€. Hacky, νμ§λ§ μλν©λλ€! μ μ΄λ λ λμ μ κ·Ό λ°©μμ μ¬μ©ν μ μμ λκΉμ§λ.
μ΄μ λν μ λ°μ΄νΈ λλ κ°λ₯ν μ루μ μ΄ μμ΅λκΉ?
+1, λ°μ΄ν°κ° ν¬ν¨λ μ°¨νΈκ° μκ³ μΌλΆ λΉλκΈ° νλ‘μΈμ€κ° μλ£λλ©΄ νλ μ΄μμ μ λ°μ΄ν° μΈνΈλ₯Ό μΆκ°νκ±°λ λ°μ΄ν° μΈνΈμ λ°μ΄ν° ν¬μΈνΈ(μ: _λΌμ΄λΈ λ°μ΄ν°_)λ₯Ό νμ₯νκ³ μΆμ΅λλ€. μ°¨νΈκ° μ²μλΆν° λ€μ μμ±νλ λμ μ λ°μ΄ν° μΈνΈμ μ λλ©μ΄μ μ μ μ©ν μ μλ€λ©΄ ν¨μ¬ λ λμ μ¦κ²κ² ν κ²μ λλ€.
@kevinjtchen μ΄ https://github.com/danielgindi/Charts/pull/2889μ λν PRμ κ²μνμ΅λλ€.
"μ°¨νΈμμ μ λλ©μ΄μ μ νΈλ¦¬ν°λ₯Ό μ¬μ©ν μλ μμ΅λλ€. μ΄ μ νΈλ¦¬ν°λ μ¬μ μ 물건μ ν¬ν¨νμ¬ μ΄λ―Έ μ«μμ μ λλ©μ΄μ μ μ μ©ν μ μμ΅λλ€."
λ¨μΌ λ°μ΄ν° μΈνΈμλ§ μ 체 μ°¨νΈλ₯Ό μ λλ©μ΄μ ννλ μ΅μ μ΄ νμλμ§ μμ΅λλ€. λ΄κ° λκ°λ₯Ό λμΉκ³ μμ΅λκΉ?
2λ μ΄ λμλλ° μ΄λ»κ² ꡬννλμ§ μμλ λΆ κ³μ κ°μ?
μ΄κ²μ΄ ꡬνλ μμ μ λκΉ? λλ λ€μκ³Ό κ°μ΄ κ°λ¨ν κ²μ ν μ μκΈ°λ₯Ό μνλ€.
lineChart.animate(to: newDataSet, duration: 1.0);
setupChart()λ₯Ό λ€μ νΈμΆνκΈ° μ μ μ΄μ κ°μ λ°°μ΄μ μ§μ°κ³ μ κ°μΌλ‘ μ±μ°μμμ€.
λ²μ¨ 2019λ μΈλ° μ 체 μ°¨νΈλ₯Ό μ²μλΆν° λ€μ κ·Έλ¦¬μ§ μκ³ λ°μ΄ν° λ³κ²½ μ¬νμ μ λλ©μ΄μ ννλ μ루μ μ΄ μμ΅λκΉ? π
2λ μ΄ λμλλ° μ΄λ»κ² ꡬννλμ§ μμλ λΆ κ³μ κ°μ?
μ΄μ 4λ μ΄ λμμ΅λλ€. μ°λ¦¬κ° μ΄κ²μ μ»μ§ λͺ»ν κ²μ΄λΌκ³ λ§νλ κ²μ΄ μμ΅λλ€ :(
PR #2889κ° λ«ν μ΄μ λ νμ€νμ§ μμ§λ§ danielgindis ꡬνμ μν λΉ λ₯Έ μ½λ μ‘°κ°μ μνλ μ¬λλ€μ μν΄: https://github.com/mrjko/testCharts/blob/master/chartsTest/BarChartViewController/BarChartViewController.swift
lineChartμ λν΄ μ΄ μμ μ μννλ λ°©λ²μ μλ μ¬λμ΄ μμ΅λκΉ? μ 체 μ°¨νΈλ₯Ό λ€μ κ·Έλ¦¬μ§ μκ³ μ μμΉλ₯Ό λΆλλ½κ² λ³κ²½ν΄μΌ ν©λλ€.
@vittorionapoli μμ κ²μλ @mrjko μ λμΌνκ² μ¬μ©ν μ μμ§λ§ LineChartDataSetμΌλ‘ λ체
func partialResults(setA: LineChartDataSet, setB: LineChartDataSet, phase: Double) -> LineChartDataSet {
let newSet = LineChartDataSet()
for index in 0..<setA.entries.count {
let currA = setA.entries[index].y
let currB = setB.entries[index].y
let newValue = (currB - currA) * phase + currA
newSet.append(BarChartDataEntry(x: Double(index), y: newValue))
}
return newSet
}
@mrjko μμ λ°©λ²μ λμ λ§λ μ°¨νΈ μ yValues λ°°μ΄ μ λν΄ μ΄λ»κ² μλν©λκΉ?
BarChartDataEntry(x: Double(index), yValues: [anArrayOfyValues])
μ μλ μ루μ
μ LineChartDataSet
μ
λ°μ΄νΈνκ³ setA
μ setB
κ° λ€λ₯Έ κ²½μ° dataSetμμ μ κ°μ μΆκ°/μ κ±°ν©λλ€.
func partialResults(setA: LineChartDataSet, setB: LineChartDataSet, phase: Double) -> LineChartDataSet {
let newSet = LineChartDataSet()
let setACount = setA.entries.count
let setBCount = setB.entries.count
for index in 0..<min(setACount, setBCount) {
let currA = setA.entries[index].y
let currB = setB.entries[index].y
let newValue = (currB - currA) * phase + currA
newSet.append(ChartDataEntry(x: Double(index), y: newValue))
}
let diff = abs(setACount - setBCount)
if setACount < setBCount {
for index in setBCount - diff..<setBCount {
let currB = setB.entries[index].y
let newValue = currB
newSet.append(ChartDataEntry(x: Double(index), y: newValue))
}
} else if setACount > setBCount {
for index in setACount - diff..<setACount {
let currA = setA.entries[index].y
let newValue = currA
newSet.append(ChartDataEntry(x: Double(index), y: newValue))
}
}
return newSet
}
κ°μ₯ μ μ©ν λκΈ
2λ μ΄ λμλλ° μ΄λ»κ² ꡬννλμ§ μμλ λΆ κ³μ κ°μ?