рдореБрдЭреЗ рдЪрд╛рд░реНрдЯ рдХреЛ рд╕рдВрд╕реНрдХрд░рдг 2 (рд╕реНрд╡рд┐рдлреНрдЯ 2.3) рд╕реЗ 3 (рд╕реНрд╡рд┐рдлреНрдЯ 3) рдореЗрдВ рдорд╛рдЗрдЧреНрд░реЗрдЯ рдХрд░рдиреЗ рдореЗрдВ рдХрдард┐рдирд╛рдИ рд╣реЛ рд░рд╣реА рд╣реИред
рдореВрд▓ рд░реВрдк рд╕реЗ, рдореЗрд░реЗ рдкрд╛рд╕ рд╕рдВрдмрдВрдзрд┐рдд рднреВрдЦрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕рдВрд░реЗрдЦрд┐рдд x рд▓реЗрдмрд▓ (рддрд┐рдерд┐рдпрд╛рдВ) рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред
рдпрд╣ рд╡рд╣реА рд╣реИ рдЬреЛ рдореЗрд░реЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕рдВрд╕реНрдХрд░рдг 2 рдореЗрдВ рдерд╛:
https://i.stack.imgur.com/wOL3t.png
рд╕рдВрд╕реНрдХрд░рдг 2 рдореЗрдВ, рдореЗрд░реЗ рдкрд╛рд╕ 7, 8, 10 рдФрд░ 11 рджрд┐рдиреЛрдВ рдХреЗ рд▓рд┐рдП рдорд╛рди рдереЗред рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдмреАрдЪ рдореЗрдВ рдПрдХ рджрд┐рди рдпрд╛рдж рдЖ рд░рд╣рд╛ рдерд╛, рд▓реЗрдХрд┐рди рд▓реЗрдмрд▓ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рднреВрдЦрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдВрд░реЗрдЦрд┐рдд рдереЗред
рдФрд░ рдпрд╣рд╛рдБ рдореЗрд░реЗ рдкрд╛рд╕ рд╕рдВрд╕реНрдХрд░рдг 3 рдореЗрдВ рд╣реИ:
https://i.stack.imgur.com/arIL2.png
рд╕рдВрд╕реНрдХрд░рдг 3 рдореЗрдВ, x рдЕрдХреНрд╖ рдореЗрдВ "рд▓реЗрдмрд▓" рдХреЛ рдЕрдм рдбрдмрд▓ рд╕реЗ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ (рддрд╛рд░реАрдЦреЛрдВ рдХреЗ рд▓рд┐рдП, рдпрд╣ 1970 рд╕реЗ рдПрдХ рд╕рдордп рдЕрдВрддрд░рд╛рд▓ рд╣реИ), рдФрд░ рдПрдХ рдлрд╝реЙрд░реНрдореЗрдЯрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реНрд╡рд░реВрдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рддреЛ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдЧреНрд░рд╛рдл рдЕрдм рдЕрдзрд┐рдХ "рд╕рд╣реА" рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЪрд╛рд░реНрдЯ рд╕рд╣реА рдврдВрдЧ рд╕реЗ 9рд╡реАрдВ рдХреЗ рдорд╛рди рдХреЛ рдПрдХреНрд╕рдЯреНрд░рдкрд▓реЗрд╢рди рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрд╣ рдирд╣реАрдВ рдорд┐рд▓ рд░рд╣рд╛ рд╣реИ рдХрд┐ рд╕рдВрдмрдВрдзрд┐рдд рднреВрдЦрдВрдбреЛрдВ рдХреЗ рддрд╣рдд рд▓реЗрдмрд▓ рдХреИрд╕реЗ рд▓рдЧрд╛рдП рдЬрд╛рдПрдВред
рдПрдХреНрд╕ рдЕрдХреНрд╖ рдХреЗ рд▓рд┐рдП рдпрд╣ рдореЗрд░рд╛ рдХреЛрдб рд╣реИ:
```
рдЪрд╛рд░реНрдЯ рд╡реНрдпреВ = рд▓рд╛рдЗрди рдЪрд╛рд░реНрдЯ рд╡реНрдпреВ () рджреЗрдВ
...
рдЪрд▓реЛ xAxis = chartView.xAxis
xAxis.labelPosition = .bottom
xAxis.labelCount = entry.count
xAxis.drawLabelsEnabled = true
xAxis.drawLimitLinesBehindDataEnabled = true
xAxis.avoidFirstLastClippingEnabled = true
// x рдорд╛рди рджрд┐рдирд╛рдВрдХ рдлрд╝реЙрд░реНрдореЗрдЯрд░ рд╕реЗрдЯ рдХрд░реЗрдВ
рдЪрд▓реЛ xValuesNumberFormatter = ChartXAxisFormatter ()
xValuesNumberFormatter.dateFormatter = dayNumberAndShortNameFormatter // рдЬреИрд╕реЗ "рд╡реЗрдб 26"
xAxis.valueFormatter = xValuesNumberFormatter
Here is the ChartXAxisFormatter class I created:
рдЗрдВрдкреЛрд░реНрдЯ рдлрд╛рдЙрдВрдбреЗрд╢рди
рдЖрдпрд╛рдд рдЪрд╛рд░реНрдЯ
рдХреНрд▓рд╛рд╕ рдЪрд╛рд░реНрдЯрдПрдХреНрд╕рдПрдХреНрд╕рд┐рд╕рдлреЙрд░реНрдореЗрдЯрд░: рдПрдирдПрд╕рдУрдмреНрдЬреЗрдХреНрдЯ {
var dateFormatter: DateFormatter?
}
рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдЪрд╛рд░реНрдЯXAxisFormatter: IAxisValueFormatter {
func stringForValue(_ value: Double, axis: AxisBase?) -> String {
if let dateFormatter = dateFormatter {
let date = Date(timeIntervalSince1970: value)
return dateFormatter.string(from: date)
}
return ""
}
}
```
рддреЛ, рдпрд╣рд╛рдВ рдорд╛рди рд╕рд╣реА рд╣реИрдВ, рд╕реНрд╡рд░реВрдкрдг рд╕рд╣реА рд╣реИ, рдЪрд╛рд░реНрдЯ рдХрд╛ рдЖрдХрд╛рд░ рд╕рд╣реА рд╣реИ, рд▓реЗрдХрд┐рди рд╕рдВрдмрдВрдзрд┐рдд рднреВрдЦрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рд▓реЗрдмрд▓ рдХрд╛ рд╕рдВрд░реЗрдЦрдг рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реИред
рдЖрдкрдХреА рд╕рд╣рд╛рдпрддрд╛ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж
рдореИрдВ рдкрд╣рд▓реЗ рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рд╣реА рдореБрджреНрджреЗ рдореЗрдВ рднрд╛рдЧ рдЧрдпрд╛ рдерд╛ рдФрд░ рдпрд╣ рдПрдХреНрд╕-рдЕрдХреНрд╖ рдкрд░ рдЬреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ рд╡рд╣ рдПрдХ рдЗрдВрдЯрд░рдкреЛрд▓реЗрдЯреЗрдб рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рд╣реИред рдЗрд╕рдХрд╛ рдореВрд▓ рд░реВрдк рд╕реЗ рдЕрд░реНрде рдпрд╣ рд╣реИ рдХрд┐ рджрд┐рдирд╛рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд▓реЗрдмрд▓ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк _рдЖрдкрдХреЗ рд╕реНрдХреЛрд░_ рдХреЗ рд▓рд┐рдП рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рдирд╣реАрдВ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рд▓реЗрдмрд▓ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддреЗ рд╣реИрдВред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдорд╛рди рд▓реЗрдВ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ x рдорд╛рди [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10] рд╣реИрдВред рдПрдХреНрд╕-рдЕрдХреНрд╖ рд░реЗрдВрдбрд░рд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХреНрд╕-рдЕрдХреНрд╖ рдкрд░ рд▓реЗрдмрд▓ рдХреЛ рд╕рдорд╛рди рд░реВрдк рд╕реЗ рд╡рд┐рддрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд▓реЗрдмрд▓ рдХреЗ рд░реВрдк рдореЗрдВ 2.5 рдкреНрд░рд┐рдВрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рднрд▓реЗ рд╣реА рд╡рд╣ рд╡рд┐рд╢реЗрд╖ рдПрдХреНрд╕-рдорд╛рди рдЖрдкрдХреЗ рдбреЗрдЯрд╛рд╕реЗрдЯ рдореЗрдВ _not_ рд╣реЛред рдпрджрд┐ рдЖрдк рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЖрдк рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рддреЛ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ dateFormatter рдХреБрдЫ рдордзреНрдпрд╡рд░реНрддреА рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рдХреЛ рджрд┐рдирд╛рдВрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд╛рд░реВрдкрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджрд┐рди рдХреЗ рд╣рд┐рд╕рд╛рдм рд╕реЗ рдкреНрд░рд╛рд░реВрдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдпрд╣ рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рд▓реЗрдмрд▓ рдЖрдкрдХреЗ рд╕реНрдХреЛрд░ рд╕реЗ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддреЗ, рднрд▓реЗ рд╣реА рд▓реЗрдмрд▓ рд╕рд╣реА рд╣реЛ (рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдореВрд▓ рд░реВрдк рд╕реЗ рдЗрд╕реЗ рджрд┐рди рдХреЗ рд╣рд┐рд╕рд╛рдм рд╕реЗ рдЧреЛрд▓ рдХрд░рддреЗ рд╣реИрдВ)ред рдпрджрд┐ рдЖрдк _рджрд┐рди рдШрдВрдЯреЗ:рдорд┐рдирдЯ_ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдкреНрд░рд╛рд░реВрдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдЖрдк рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рд▓реЗрдмрд▓ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдкреНрд░рдХреНрд╖реЗрдкрд┐рдд рддрд┐рдерд┐ рд╣реИред
рдореИрдВрдиреЗ рдПрдХреНрд╕-рдЕрдХреНрд╖ рдХреЗ рд▓рд┐рдП рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдФрд░ рдХрд╕реНрдЯрдо рдПрдХреНрд╕-рдЕрдХреНрд╖ рдлреЙрд░реНрдореЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рд╕рд░рдгреА рдЗрдВрдбреЗрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╣рд▓ рдХрд┐рдпрд╛:
import Foundation
import Charts
class MyCustomBottomAxisFormatter: NSObject, IAxisValueFormatter {
private var scores: [MyScoreObject]?
lazy private var dateFormatter: DateFormatter = {
// set up date formatter using locale
let dateFormatter = DateFormatter()
dateFormatter.locale = Locale.current
dateFormatter.dateStyle = .short
dateFormatter.timeStyle = .none
return dateFormatter
}()
convenience init(usingScores scores: [MyScoreObject]) {
self.init()
self.scores = scores
}
func stringForValue(_ value: Double, axis: AxisBase?) -> String {
let index = Int(value)
guard let scores = scores, index < scores.count, let date = scores[index].date else {
return "?"
}
return dateFormatter.string(from: date)
}
}
рдЖрдкрдХреЗ рдЙрддреНрддрд░ рдХреЗ рд▓рд┐рдП рдмрд╣реВрдд рдмрд╣реВрдд рдзрдиреНрдпрд╡рд╛рдж!
рдФрд░ рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рдХреЗ рдкреНрд░рдХреНрд╖реЗрдкрд┐рдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рд╕реНрдкрд╖реНрдЯ рд╡реНрдпрд╛рдЦреНрдпрд╛, рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред
рдореИрдВ рдЖрдкрдХреЗ рд╕рдорд╛рдзрд╛рди рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реВрдВрдЧрд╛, рдФрд░ рдЖрдкрдХреЛ рдмрддрд╛ рджреВрдВрдЧрд╛ред
рдзрдиреНрдпрд╡рд╛рдж!
@ 4np рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ
рдЗрд╕ рддрд░рд╣ :
// Define chart yValues
var entries = [ChartDataEntry]()
for (index, score) in scores.enumerated() {
let yValue = score.value
let entry = ChartDataEntry(x: Double(index), y: yValue)
entries.append(entry)
}
@ 4np рдареАрдХ рд╣реИ, рдпрд╣ рдХрд╛рдо рдХрд┐рдпрд╛! рдореЗрд░рд╛ рдЪрд╛рд░реНрдЯ рдЕрдм рд╕рдВрд╕реНрдХрд░рдг 2 рдЬреИрд╕рд╛ рд╣реА рд╣реИред
рд▓реЗрдХрд┐рди, рдореБрдЭреЗ рдЕрдкрдиреЗ xAxis рдореЗрдВ 2 рдФрд░ рдЪреАрдЬрд╝реЗрдВ рдЬреЛрдбрд╝рдиреА рдкрдбрд╝реАрдВ:
// Show the limit lines behind each plot
xAxis.drawLimitLinesBehindDataEnabled = true
// Make sure that only 1 x-label per index is shown
xAxis.granularityEnabled = true
xAxis.granularity = 1
рдЖрдкрдХреА рд╕рд╣рд╛рдпрддрд╛ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред
рд╕рд╛рде рд╣реА, рдореИрдВрдиреЗ рд╡рд╣рд╛рдВ StackOverflow рдкрд░ рдПрдХ рд╕рдорд╕реНрдпрд╛ рдЦреЛрд▓реА:
http://stackoverflow.com/questions/41720445/ios-charts-3-0-align-x-labels-dates-with-plots
рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ SO рдЦрд╛рддрд╛ рд╣реИ рдФрд░ рдЖрдк рдЕрдкрдирд╛ рдЙрддреНрддрд░ рд╡рд╣рд╛рдВ рдХреЙрдкреА/рдкреЗрд╕реНрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдореБрдЭреЗ рдЖрдкрдХрд╛ рдЙрддреНрддрд░ рд╡рд╣рд╛рдВ рднреА рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреАред
рдзрдиреНрдпрд╡рд╛рдж
рдлреНрд░реЗрдб
рд╕рд╛рде рд╣реА, рдореИрдВрдиреЗ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рддрдм рддрдХ рдЦреБрд▓рд╛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЬрдм рддрдХ рдХрд┐ рдЪрд╛рд░реНрдЯ рджреЗрд╡реЛрдВ рдХреЛ рдЗрд╕реЗ рджреЗрдЦрдиреЗ рдХрд╛ рдореМрдХрд╛ рдирд╣реАрдВ рдорд┐рд▓рд╛, рдФрд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЪреБрдирдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдкреЗрд╢ рдХрд┐рдпрд╛ рдЬрд╛рдП рдХрд┐ рд▓реЗрдмрд▓ рдХреЛ рдХреИрд╕реЗ рд╕рдВрд░реЗрдЦрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рдЕрдм 2 рдЦрд░рд╛рдм рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреЗ рдмреАрдЪ рдЪрдпрди рдХрд░рдирд╛ рд╣реИ:
рдХреГрдкрдпрд╛ рд╣рдореЗрдВ рдмрддрд╛рдПрдВ рдЖрдк рдХреНрдпрд╛ рд╕реЛрдЪрддреЗ рд╣реИрдВред
@ рдлрд╝реНрд░реЗрдбрд░рд┐рдХ-рдЕрдбреНрдбрд╛
рдореИрдВ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣рд╛
XAxis.granularity = 1.0 рдПрдХ рджрд┐рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣реА рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ
рд╕рдмрд╕реЗ рдЫреЛрдЯреА рддрд╛рд░реАрдЦ 0 . рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП
(рдЯрд╛рдЗрдордЗрдирд╕реЗрдХрдВрдб - рдорд┐рдиреАрдбреЗрдЯ) / (3600.0 * 24.0)
рдФрд░ рд╕рд╛рд░реА рддрд░рдХреАрдм рдлрд╝реЙрд░реНрдореЗрдЯрд░ рдореЗрдВ рд╣реИ
рд╣рдо рддрд╛рд░реАрдЦ рдХреЛ рдкреБрдирдГ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рдкрд░реАрдд рдСрдкрд░реЗрд╢рди рдХрд░рддреЗ рд╣реИрдВ
рдорд╛рди рд▓реАрдЬрд┐рдП date2 = рджрд┐рдирд╛рдВрдХ (timeIntervalSince1970: (рдорд╛рди * 3600 * 24) + рдорд┐рдиреАрдЯрд╛рдЗрдо)
рд╡рд╛рдкрд╕реА dateFormatter.string (рд╕реЗ: date2)
рдордд рднреВрд▓реЛ
DateFormatter.timeZone = NSTimeZone (рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдирд╛рдо: "GMT + 0: 00") рдЯрд╛рдЗрдордЬрд╝реЛрди рдХреЗ рд░реВрдк рдореЗрдВ!
рдбреЗрдореЛ macOS рд╣реИ
рд▓рд┐рдВрдХ рд╣реИ https://github.com/thierryH91200/Charts-log
рд▓рд╛рдЗрди рджрд┐рдирд╛рдВрдХ рдЯреИрдм
@thierryH91200 рдзрдиреНрдпрд╡рд╛рдж рдерд┐рдпрд░реА!
рдореИрдВ рдЖрдкрдХреЗ рд╕рдорд╛рдзрд╛рди рдХреЛ рддреБрд░рдВрдд рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реВрдВрдЧрд╛ред
рд╡реЛ рдХрд░ рдЧрдпрд╛ рдХрд╛рдо! рд╢рд╛рдирджрд╛рд░!
рдЖрдкрдХреА рд╕рд╣рд╛рдпрддрд╛рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!
рдХреВрд▓ @thierryH91200 , рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрдЧреЗ рдмрдврд╝рдиреЗ рдХрд╛ рд░рд╛рд╕реНрддрд╛ рд▓рдЧрддрд╛ рд╣реИ
рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛
@ рдлреНрд░реЗрдбрд░рд┐рдХ-рдЕрдбреНрдбрд╛ рдХреНрдпрд╛ рдЖрдкрдХреЛ рдЕрдкрдиреА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдорд┐рд▓рд╛ ??
рдПрдХреНрд╕-рдПрдХреНрд╕рд┐рд╕ рдкрд░ рддрд┐рдерд┐рдпрд╛рдВ рджрд┐рдЦрд╛рддреЗ рд╕рдордп рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореБрдЭреЗ рд╕рдорд╕реНрдпрд╛ рд╣реИред рдореИрдВ рдЪрд╛рд░реНрдЯрдбрд╛рдЯрд╛рдПрдВрдЯреНрд░реА рдХреЗ рдПрдХреНрд╕-рд╡реИрд▓реНрдпреВ рдХреЛ рдЯрд╛рдЗрдордЗрдВрдЯрд░рд╡рд▓ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЗрдЯ рдХрд░рдХреЗ рдПрдХреНрд╕-рдПрдХреНрд╕рд┐рд╕ рдкрд░ рддрд┐рдерд┐рдпрд╛рдВ рджрд┐рдЦрд╛ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рдЪрд╛рд░реНрдЯ рдбреЗрдЯрд╛ рдХреЛ рдареАрдХ рд╕реЗ рдирд╣реАрдВ рджрд┐рдЦрд╛рддрд╛ рд╣реИред рдЪрд╛рд░реНрдЯрдбрд╛рдЯрд╛рдПрдВрдЯреНрд░реА рдХреЗ рдПрдХреНрд╕-рд╡реИрд▓реНрдпреВ рдХреЛ рдПрд░реЗ рдЗрдВрдбреЗрдХреНрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЗрдЯ рдХрд░рддреЗ рд╕рдордп рдбреЗрдЯрд╛ рджрд┐рдЦрд╛рддрд╛ рд╣реИред
рдЪрд╛рд░реНрдЯрдбрд╛рдЯрд╛рдПрдВрдЯреНрд░реА рдХреЗ рдПрдХреНрд╕-рд╡реИрд▓реНрдпреВ рдХреЛ рдЯрд╛рдЗрдордЗрдВрдЯрд░рд╡рд▓ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореЗрд░рд╛ рдХреЛрдб рдпрд╣рд╛рдВ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
рдХреЗ рд▓рд┐рдП (int i = 0; i < self.temperatureUpdates.count; i++)
{
SFTtemperatureUpdate *temperatureUpdate = [self.temperatureUpdates obje ctAtIndex:i ];
рдбрдмрд▓ yVal = [рддрд╛рдкрдорд╛рдирдЕрдкрдбреЗрдЯ.рд╡реИрд▓реНрдпреВ рдлреНрд▓реЛрдЯрд╡реИрд▓реНрдпреВ];
NSTimeInterval timeInterval = [temperatureUpdate.careatedAt timeIntervalSince1970];
рдбрдмрд▓ xVal = рд╕рдордп рдЕрдВрддрд░рд╛рд▓;
[yVals1 addObject:[[ChartDataEntry alloc] initWithX:xVal y:yVal]];
}
рдПрдХ рдЧреНрд░рд╛рдл рдкрд░ рдПрдХрд╛рдзрд┐рдХ LineChartDataSets рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдЙрдкрд░реЛрдХреНрдд рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреЛ рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдХреНрдпрд╛ рдХреЛрдИ рдЗрд╕реЗ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИ?
рдЬрдм рдПрдХ рдбреЗрдЯрд╛рд╕реЗрдЯ рджреВрд╕рд░реЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЖрдХрд╛рд░ рдореЗрдВ рднрд┐рдиреНрди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рддреЛ рдореБрдЭреЗ рд╕рдорд╛рдзрд╛рди рдЦреЛрдЬрдиреЗ рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд░рд╣реА рд╣реИред
рдЕрд░реНрдерд╛рдд
let x = LineChartDataSet(values: values1, label: "test 1") // count 5
let y = LineChartDataSet(values: values2, label: "test 2") // count 8
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдореИрдВ рдкрд╣рд▓реЗ рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рд╣реА рдореБрджреНрджреЗ рдореЗрдВ рднрд╛рдЧ рдЧрдпрд╛ рдерд╛ рдФрд░ рдпрд╣ рдПрдХреНрд╕-рдЕрдХреНрд╖ рдкрд░ рдЬреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ рд╡рд╣ рдПрдХ рдЗрдВрдЯрд░рдкреЛрд▓реЗрдЯреЗрдб рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рд╣реИред рдЗрд╕рдХрд╛ рдореВрд▓ рд░реВрдк рд╕реЗ рдЕрд░реНрде рдпрд╣ рд╣реИ рдХрд┐ рджрд┐рдирд╛рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд▓реЗрдмрд▓ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк _рдЖрдкрдХреЗ рд╕реНрдХреЛрд░_ рдХреЗ рд▓рд┐рдП рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рдирд╣реАрдВ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рд▓реЗрдмрд▓ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддреЗ рд╣реИрдВред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдорд╛рди рд▓реЗрдВ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ x рдорд╛рди [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10] рд╣реИрдВред рдПрдХреНрд╕-рдЕрдХреНрд╖ рд░реЗрдВрдбрд░рд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХреНрд╕-рдЕрдХреНрд╖ рдкрд░ рд▓реЗрдмрд▓ рдХреЛ рд╕рдорд╛рди рд░реВрдк рд╕реЗ рд╡рд┐рддрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд▓реЗрдмрд▓ рдХреЗ рд░реВрдк рдореЗрдВ 2.5 рдкреНрд░рд┐рдВрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рднрд▓реЗ рд╣реА рд╡рд╣ рд╡рд┐рд╢реЗрд╖ рдПрдХреНрд╕-рдорд╛рди рдЖрдкрдХреЗ рдбреЗрдЯрд╛рд╕реЗрдЯ рдореЗрдВ _not_ рд╣реЛред рдпрджрд┐ рдЖрдк рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЖрдк рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рддреЛ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ dateFormatter рдХреБрдЫ рдордзреНрдпрд╡рд░реНрддреА рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рдХреЛ рджрд┐рдирд╛рдВрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд╛рд░реВрдкрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджрд┐рди рдХреЗ рд╣рд┐рд╕рд╛рдм рд╕реЗ рдкреНрд░рд╛рд░реВрдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдпрд╣ рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рд▓реЗрдмрд▓ рдЖрдкрдХреЗ рд╕реНрдХреЛрд░ рд╕реЗ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддреЗ, рднрд▓реЗ рд╣реА рд▓реЗрдмрд▓ рд╕рд╣реА рд╣реЛ (рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдореВрд▓ рд░реВрдк рд╕реЗ рдЗрд╕реЗ рджрд┐рди рдХреЗ рд╣рд┐рд╕рд╛рдм рд╕реЗ рдЧреЛрд▓ рдХрд░рддреЗ рд╣реИрдВ)ред рдпрджрд┐ рдЖрдк _рджрд┐рди рдШрдВрдЯреЗ:рдорд┐рдирдЯ_ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдкреНрд░рд╛рд░реВрдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдЖрдк рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рд▓реЗрдмрд▓ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдкреНрд░рдХреНрд╖реЗрдкрд┐рдд рддрд┐рдерд┐ рд╣реИред
рдореИрдВрдиреЗ рдПрдХреНрд╕-рдЕрдХреНрд╖ рдХреЗ рд▓рд┐рдП рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдФрд░ рдХрд╕реНрдЯрдо рдПрдХреНрд╕-рдЕрдХреНрд╖ рдлреЙрд░реНрдореЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рд╕рд░рдгреА рдЗрдВрдбреЗрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╣рд▓ рдХрд┐рдпрд╛: