Intimamente relacionado a esta questão , o código do Gradiente Linear funciona bem, mas está sempre vinculado aos seus dados, por exemplo, este código abaixo, se você tiver uma matriz de frequências cardíacas de 70 a 110, as frequências cardíacas mais baixas serão sempre cinza e as superiores sempre roxo, mas também uma matriz de 90 a 195. Como mapear as paradas para que a cor corresponda à zona de frequência cardíaca? Em outras palavras, as frequências cardíacas de 70 a 110 mostrariam apenas, por exemplo, azul a laranja?
Chart {
ForEach(smoothHeartRatesEMA(customHeartRates, decayFactor: 0.3)) { heartRate in
LineMark(
x: .value("Sample Time", heartRate.startDate, unit: .nanosecond), //changed these to .nanosecond to fix Nike Run Club bug (some how Nike Run Club gets more frequent HR samples than other apps?)
y: .value("Heart Rate", heartRate.doubleValue)
)
.lineStyle(StrokeStyle(lineWidth: 3.0))
.foregroundStyle(
.linearGradient(
stops: [
.init(color: Color.gray, location: 0.0),
.init(color: TrackerConstants.AppleFitnessBlue, location: 0.16),
.init(color: TrackerConstants.AppleFitnessYellow, location: 0.33),
.init(color: TrackerConstants.AppleFitnessOrange, location: 0.5),
.init(color: TrackerConstants.AppleFitnessRed, location: 0.66),
.init(color: TrackerConstants.AppleFitnessPurple, location: 1.0) //how do I get these to allign with a range of e.g. 170-210. I.e. if no heart rate is above 170bpm, the line is never purple?
],
startPoint: .bottom,
endPoint: .top)
)
}
}
.chartYScale(domain: 50...210)