now it is possible to add background lines precisely as charts are displayed at correct size also rewrote basics to conform with Shapes and Animatable protocol
41 lines
882 B
Swift
41 lines
882 B
Swift
import SwiftUI
|
|
|
|
/// An observable wrapper for an array of data for use in any chart
|
|
public class ChartData: ObservableObject {
|
|
@Published public var data: [(String, Double)] = []
|
|
|
|
var points: [Double] {
|
|
data.map { $0.1 }
|
|
}
|
|
|
|
var values: [String] {
|
|
data.map { $0.0 }
|
|
}
|
|
|
|
var normalisedPoints: [Double] {
|
|
points.map { $0 / (points.max() ?? 1.0) }
|
|
}
|
|
|
|
var normalisedRange: Double {
|
|
(normalisedPoints.max() ?? 0.0) - (normalisedPoints.min() ?? 0.0)
|
|
}
|
|
|
|
var isInNegativeDomain: Bool {
|
|
(points.min() ?? 0.0) < 0
|
|
}
|
|
|
|
/// Initialize with data array
|
|
/// - Parameter data: Array of `Double`
|
|
public init(_ data: [Double]) {
|
|
self.data = data.map { ("", $0) }
|
|
}
|
|
|
|
public init(_ data: [(String, Double)]) {
|
|
self.data = data
|
|
}
|
|
|
|
public init() {
|
|
self.data = []
|
|
}
|
|
}
|