O código sugerido apresentava o erro: AttributeError: 'NoneType' object has no attribute 'xaxis'
A única forma que consegui rodar sem erro foi conforme segue:
import matplotlib.dates as mdates
def grafico_vendas_sp_tri():
import matplotlib.pyplot as plt
fig, ax = plt.subplots(figsize=(14,4))
pontos_a_marcar = [True if mes == 12 else False for mes in df_sp["data_pedido"].dt.month]
ax.plot(df_sp["data_pedido"], df_sp["vendas"], lw = 3, color = AZUL5, marker = "o", markersize = 10, markerfacecolor = AZUL2, markevery = pontos_a_marcar)
ax.set_title('Vendas por trimestre no estado de São Paulo', fontsize = 18, color = CINZA1, loc='left')
ax.text(0.3, 0.95, "De 2016 a 2019 (em milhares de reais)", transform=ax.transAxes, color= CINZA2, fontsize=12, ha='right', va='center')
ax.set_xlabel('')
ax.set_ylabel('')
ax.set_yticklabels([])
ax.set_frame_on(False)
ax.xaxis.set_tick_params(labelsize=14, labelcolor = CINZA2)
ax.tick_params(axis='both', which='both', length=0)
## Ajustes no eixo x
# Definindo o intervalo em trimestres e colocando os nomes dos meses nos labels
ax.xaxis.set_major_locator(mdates.MonthLocator(interval = 3))
ax.xaxis.set_major_formatter(mdates.DateFormatter("%b"))
x_labels = ["Mar", "Jun", "Set", "Dez"] * 4
ax.set_xticks(df_sp.data_pedido)
ax.set_xticklabels(x_labels, ha = "center")
# # Ajustando o eixo x colocando um nível acima de granularidade por meio da exibição do ano
texto = [16*" " + str(i) + 16*" " for i in range(2016, 2020)]
ax.text(ax.get_xbound()[0] + 35, - 80, f'|{texto[0]}|{texto[1]}|{texto[2]}|{texto[3]}|', fontsize=14, color=CINZA2)
# # Destacando os valores do 4º trimestre
ano = 0
for i in range(3, len(df_sp["vendas"]), 4):
ax.text(x = ax.get_xticks()[i], y = df_sp["vendas"][i] + 20, s = f"R$ {df_sp['vendas'][i]} mil", color = AZUL2, weight = "bold", fontsize = 10)
ax.text(x = ax.get_xticks()[i] + 160, y = df_sp["vendas"][i] + 20, s = f"(4º Tri {2016 + ano})", color = CINZA2, weight = "bold", fontsize = 10)
ano +=1
fig = ax.get_figure()
grafico_vendas_sp_tri()