A forecast as the chance of each outcome, with no line through the middle. The measured history is a line because it was measured, and it stops at NOW. Past it the projection is bands of equal probability, 10% each out to 90%, darkest at the centre, and no median, mean or mode is drawn through them: a central line is what readers look at instead of the spread. The outermost band has no outline and the space past it is labelled with what it holds, 5% above and 5% below, so the edge of the shading never reads as the edge of what can happen. Skew is kept, not mirrored. A step with no forecast, or too few runs to place a 5th percentile, is a gap, and the fan is not bridged across it.
import 'overscan'
import 'overscan/overscan.css'
<ov-fan
src="models/fan-price.json"
unit="%"
label="CPI 12M"
></ov-fan>import { OvFan } from 'overscan/react'
<OvFan
src="models/fan-price.json"
unit="%"
label="CPI 12M"
/>import { OvFan } from 'overscan/vue'
<OvFan
src="models/fan-price.json"
unit="%"
label="CPI 12M"
/>import OvFan from 'overscan/svelte/OvFan.svelte'
<OvFan
src="models/fan-price.json"
unit="%"
label="CPI 12M"
/>import 'overscan'
import 'overscan/overscan.css'
<ov-fan
src="models/fan-load.json"
unit="MW"
label="FEEDER 7"
></ov-fan>import { OvFan } from 'overscan/react'
<OvFan
src="models/fan-load.json"
unit="MW"
label="FEEDER 7"
/>import { OvFan } from 'overscan/vue'
<OvFan
src="models/fan-load.json"
unit="MW"
label="FEEDER 7"
/>import OvFan from 'overscan/svelte/OvFan.svelte'
<OvFan
src="models/fan-load.json"
unit="MW"
label="FEEDER 7"
/>import 'overscan'
import 'overscan/overscan.css'
<ov-fan
src="models/fan-thin.json"
unit="MW"
label="FEEDER 7"
></ov-fan>import { OvFan } from 'overscan/react'
<OvFan
src="models/fan-thin.json"
unit="MW"
label="FEEDER 7"
/>import { OvFan } from 'overscan/vue'
<OvFan
src="models/fan-thin.json"
unit="MW"
label="FEEDER 7"
/>import OvFan from 'overscan/svelte/OvFan.svelte'
<OvFan
src="models/fan-thin.json"
unit="MW"
label="FEEDER 7"
/>import 'overscan'
import 'overscan/overscan.css'
<ov-fan
src="models/fan-median.json"
unit="%"
></ov-fan>import { OvFan } from 'overscan/react'
<OvFan
src="models/fan-median.json"
unit="%"
/>import { OvFan } from 'overscan/vue'
<OvFan
src="models/fan-median.json"
unit="%"
/>import OvFan from 'overscan/svelte/OvFan.svelte'
<OvFan
src="models/fan-median.json"
unit="%"
/>