Plot.plot({
title: "BetterHelp remained affordable",
caption:
"BetterHelp's average revenue per user didn't significantly increase since they started reporting revenue and users. In fact, what increases there were largely happened before the November 2023 minimum price increase, and they started losing users well before either. Note that the ARPU stays below the minimum price due to a combination of within-quarter churn and BetterHelp's financial assistance programme.",
y: {
ticks: 7,
tickFormat: "$s",
grid: true,
label: "Average weekly revenue per user"
},
x: {
domain: [minDate, maxDate]
},
clip: true,
marks: [
Plot.ruleY([0]),
Plot.text(["Minimum price"], {
x: maxDate,
y: 65,
dy: -4,
fill: "black",
stroke: "white",
strokeWidth: 7,
textAnchor: "end",
lineAnchor: "bottom"
}),
Plot.line(prices, {
x: "Date",
y: "Minimum Price",
curve: "step-after",
strokeWidth: 1,
strokeDasharray: [4, 3]
}),
Plot.line(data, {
x: "Date",
y: "Average weekly revenue per user",
tip: true
}),
Plot.ruleX([new Date("2023-06-30")], {
strokeDasharray: [4, 3],
stroke: "#3a7a4b",
strokeWidth: 1,
tip: true
}),
Plot.text(["BetterHelp starts losing users"], {
x: new Date("2023-06-30"),
dx: -4,
y: 1,
fill: "#3a7a4b",
stroke: "white",
strokeWidth: 7,
rotate: -90,
textAnchor: "start",
lineAnchor: "bottom",
fontWeight: "bold"
})
]
})