Plot.plot({
x: {
label: "Date",
domain: years
},
y: {
label: "Forward PE",
grid: true,
domain: [-10, 30],
ticks: 5,
},
monospace: true,
marks: [
Plot.lineY(data, {x: d => (!years || d.Date >= years[0] && d.Date <= years[1]) ? d.Date : NaN,
y: "Forward PE", tip: true, stroke: "gray"}),
Plot.lineY(data, {x: d => (!years || d.Date >= years[0] && d.Date <= years[1]) ? d.Date : NaN,
y: "+2 Standard Deviation", stroke: "#fc9272"}),
Plot.lineY(data, {x: d => (!years || d.Date >= years[0] && d.Date <= years[1]) ? d.Date : NaN,
y: "+1 Standard Deviation", stroke: "#ef3b2c"}),
Plot.lineY(data, {x: d => (!years || d.Date >= years[0] && d.Date <= years[1]) ? d.Date : NaN,
y: "Mean", stroke: "#a50f15"}),
Plot.lineY(data, {x: d => (!years || d.Date >= years[0] && d.Date <= years[1]) ? d.Date : NaN,
y: "-1 Standard Deviation", stroke: "#ef3b2c"}),
Plot.lineY(data, {x: d => (!years || d.Date >= years[0] && d.Date <= years[1]) ? d.Date : NaN,
y: "-2 Standard Deviation", stroke: "#fc9272"}),
Plot.text(data, {x: data[data.length-1].Date, y: data[data.length-1]["Mean"], text: "Mean", dy: -10}),
Plot.text(data, {x: data[data.length-1].Date, y: data[data.length-1]["+1 Standard Deviation"], text: "+1 Standard Deviation", dy: -10}),
Plot.text(data, {x: data[data.length-1].Date, y: data[data.length-1]["+2 Standard Deviation"], text: "+2 Standard Deviation", dy: -10}),
Plot.text(data, {x: data[data.length-1].Date, y: data[data.length-1]["-1 Standard Deviation"], text: "-1 Standard Deviation", dy: -10}),
Plot.text(data, {x: data[data.length-1].Date, y: data[data.length-1]["-2 Standard Deviation"], text: "-2 Standard Deviation", dy: -10}),
], width: 1200
})