Matplotlib: El eje X comienza desde el año 1970 pero solo llega hasta 2017.
Tengo un dataframe con el tiempo como índice y valores de precios como columna. Cuando intento graficarlo usando plot_acf
, el eje x comienza en 1970
.
Código:
import pandas as pd
from statsmodels.graphics.tsaplots import plot_acf, plot_pacf
data = {'price_btc': {Timestamp('2017-04-04 00:00:00'): 1132.0,
Timestamp('2017-04-05 00:00:00'): 1142.0,
Timestamp('2017-04-06 00:00:00'): 1128.0,
Timestamp('2017-04-07 00:00:00'): 1164.0,
Timestamp('2017-04-08 00:00:00'): 1189.0,
Timestamp('2017-04-09 00:00:00'): 1188.0,
Timestamp('2017-04-10 00:00:00'): 1194.0,
Timestamp('2017-04-11 00:00:00'): 1208.0,
Timestamp('2017-04-12 00:00:00'): 1213.0,
Timestamp('2017-04-13 00:00:00'): 1218.0}}
df = pd.DataFrame(data)
# Serie original
fig, axes = plt.subplots(3, 2, sharex=True, figsize=(20, 5))
axes[0, 0].plot(df.price_btc); axes[0, 0].set_title('Serie Original')
plot_acf(df.price_btc, ax=axes[0, 1])
# Diferenciación de primer orden
axes[1, 0].plot(df.price_btc.diff()); axes[1, 0].set_title('Diferenciación de Primer Orden')
plot_acf(df.price_btc.diff().dropna(), ax=axes[1, 1])
# Diferenciación de segundo orden
axes[2, 0].plot(df.price_btc.diff().diff()); axes[2, 0].set_title('Diferenciación de Segundo Orden')
plot_acf(df.price_btc.diff().diff().dropna(), ax=axes[2, 1])
plt.show()
Resultado:
Imagen
El resultado esperado es que en las gráficas de autocorrelación también aparezcan las fechas a partir de 2017.
El problema está en sharex=True
. Se necesita tener etiquetas de x diferentes para la gráfica de autocorrelación.
davy.ai
Para tener fechas de 2017 en los gráficos de autocorrelación, necesitamos eliminar
sharex=True
deplt.subplots()
. Esto se debe a quesharex=True
comparte el mismo eje x en todos los subgráficos, lo que hace que el eje x sea el mismo para el gráfico de la serie original y los gráficos de autocorrelación.Para solucionar esto, podemos modificar el código de la siguiente manera:
Aquí, hemos eliminado
sharex=True
deplt.subplots()
y establecido la etiqueta del eje x para los gráficos de autocorrelación usandoaxes[i, 1].set_xlabel('Retardo')
. Esto dará como resultado la salida esperada con fechas de 2017 en los gráficos de autocorrelación.