2011-06-07 14 views
24

Las opciones de formato de eje de matplotlib tienden a fallar cuando se trata de trazar y etiquetar de manera efectiva datos de series de tiempo densas.matplotlib: Centrado de etiquetas de período bajo los datos del período en un gráfico de series de tiempo

Un problema es que las etiquetas de tic están vinculadas a tics, por lo que si establece tics de eje a una frecuencia adecuada, generalmente hay demasiadas etiquetas. Esto también significa que si está trazando, por ejemplo, datos diarios durante un período de varios años, no hay una buena manera de etiquetar el eje x cada año en su posición natural: centrado bajo los datos del año (es decir, debajo de la x posición del eje para el 2 de julio, más o menos).

-El truco se describe en this example -establezca los ticks principales donde los desee, luego use marcas menores invisibles para colocar las etiquetas en otro lugar-funciona, pero lo limita a un conjunto visible de tics de eje (ya que cada eje está limitado a uno conjunto de grandes y un conjunto de tics menores). No puede mostrar, por ejemplo, tics importantes al comienzo de cada año y tics menores al comienzo de cada mes sin renunciar a la capacidad de colocar etiquetas de año centradas de manera apropiada entre los tics principales (anuales), como encontraría en la publicación parcelas de alta calidad.

¿Existe una solución temporal que no implique dibujar todo completamente de forma manual?

+7

Aunque estoy de acuerdo en que el etiquetado de matplotlib puede ser más flexible, el tipo de etiquetado que está describiendo solo requiere dos o tres líneas de código ... Es bastante simple hacerlo manualmente con 'annotate'. –

+0

dependiendo de la naturaleza de sus datos, es posible que desee consultar www.rrdtool.org ... hace un buen trabajo etiquetando el eje x (creo). –

+0

¿Ha pasado algo aquí en los últimos años? Tengo el mismo problema que pash y no he encontrado nada satisfactorio. Uno pensaría que no debería ser un problema incluir una opción para algo como esto en el código. Entonces, si alguien tiene una solución, también me gustaría escuchar :) - gracias. –

Respuesta

1

¿Has mirado la capacidad tsplot en scikits.timeseries? No se ha mantenido mucho recientemente, pero funciona bastante bien. Transmitiré ese código a los pandas en algún momento cercano.

+0

Wes, 'tsplot' interactúa con una subclase de matplotlib's' Subplot', por lo que ofrece exactamente las mismas características (y la falta de ellas) a este respecto. Gracias por tu gran trabajo en pandas, por cierto. Es una gran biblioteca que uso a menudo. – pash

Cuestiones relacionadas