Hi @shoops,
I may have found what you need here.
The year is not centered, it is displayed below the first label, but that is a good formatting too.
You can add ticks also:
fig.update_xaxes(
dtick="M1",
tickformat="%b\n%Y",
ticklabelmode="period",
ticks="inside",
minor=dict(
ticks="outside",
tickwidth=2,
ticklen=30,
dtick="M12",
),
)
And easily change the periods:
fig.update_xaxes(
dtick="M3",
tickformat="Q%q\n%Y",
ticklabelmode="period",
ticks="inside",
minor=dict(
ticks="outside",
tickwidth=2,
ticklen=30,
dtick="M12",
),
)