Matplotlib elimina la interpolación de los datos faltantes

Estoy trazando datos de series de tiempo usando Matplotlib y faltan algunos de los datos en la secuencia. Matplotlib une de manera implícita el último punto de datos contiguos al siguiente. Pero en caso de que falten datos, la ttwig se ve fea. La siguiente es la ttwig obtenida. introduzca la descripción de la imagen aquí

Se puede ver que cerca del marcador del 30 de abril, faltan datos y Matplotlib se une a los puntos. También la siguiente imagen es el diagtwig de dispersión de los datos. El diagtwig de dispersión cubre esta falla, pero los puntos de datos contiguos no serán conjuntos en este caso. Además, el diagtwig de dispersión es muy lento dado el gran número de puntos de datos involucrados. introduzca la descripción de la imagen aquí

¿Cuál es la solución recomendada para tales problemas?

Si puede identificar dónde deberían estar los puntos de quiebre, puede:

  1. rompe los datos y traza cada ‘sección’ a mano
  2. Insertar np.nan en los datos en los huecos.

Ver, por ejemplo, Trazar trayectorias periódicas .

Puede obtener el mismo efecto de scatter (si no desea escalar el tamaño o el color de cada punto de forma independiente) con

 ax.plot(x, y, linestyle='none', marker='o') 

Como dice la respuesta anterior, debe insertar NaN donde no haya datos. Esta respuesta es específica para Pandas y explica cómo esto se puede lograr fácilmente. Ya sea :

  • Series.resample() o
  • Series.reindex()

El método más sencillo de usar es resample() . Esta es la forma más concisa para datos espaciados regularmente. Entonces, en su ejemplo anterior, si tiene, por ejemplo, datos de 5 minutos, simplemente haga data.resample("5 min") . Esto devolverá su conjunto de datos con ‘NaT’ (tiempo equivalente a NaN) en los valores faltantes.

El único caso en el que esto no funciona demasiado bien es cuando las muestras no están espaciadas regularmente.

La alternativa es reindex() , que también funciona para datos ordenados (pero no de series de tiempo). Entonces, por ejemplo, si tiene un conjunto de datos indexado con números enteros de 0 … 100, pero con algunas muestras faltantes, podría hacer data.reindex([0:100]) . También puede replicar el comportamiento de resample con reindex , pasando una función pandas.date_range() como un argumento.