I have a dataset I want to have split between past/historic data and future/predicted data. The values for the predicted data take the last value from pastData
and apply a decay function to show how much of something is left.
I have the data split into two arrays (sampleData_History
and sampleData_Future
); I have also attempted this with the data combined (sampleData
) and tried a conditional in the .foregroundStyle
property.
Chart {
ForEach(sampleData_History) { item in
RuleMark(x: .value("Now", Date.now, unit: .hour)).foregroundStyle(.orange)
LineMark(
x: .value("time", item.date, unit: .hour),
y: .value("mg", item.amount)
)
.foregroundStyle(Color.blue)
AreaMark(
x: .value("time", item.date, unit: .hour),
y: .value("mg", item.amount)
).foregroundStyle(Color.teal.opacity(0.2))
}
ForEach(sampleData_Future) { item in
LineMark(
x: .value("time", item.date, unit: .hour),
y: .value("mg", item.amount)
)
.foregroundStyle(Color.red)
AreaMark(
x: .value("time", item.date, unit: .hour),
y: .value("mg", item.amount)
).foregroundStyle(Color.red.opacity(0.2))
}
}
The above code yields the screenshot below. In the ideal case, I'd like to have everything AFTER the RuleMark
line be a different color. Am I missing something? Where might I look to figure this out?
EDIT: I have also tried separating them into series
to no avail
You can try to serve all the data as one array, but add the data element to the field "come true": Bool and depending on this field specify the color of the graph.