Graficar con datos no numéricos en el eje x (por ej., Fechas)

Me gustaría trazar datos numéricos contra datos no numéricos, decir algo como esto:

import matplotlib.pyplot as pl x=['a','b','c','d'] y=[1,2,3,4] pl.plot(x,y) 

Sin embargo, con los paquetes de gráficos matplotlib aparece una advertencia de que los datos no son flotantes (ValueError: literal no válido para float (): a).

En su ‘Cómo hacer’ , sugieren poner primero los datos numéricos en el eje x y luego formatearlos. ¿Hay una manera de hacerlo directamente (como arriba)?

Related of "Graficar con datos no numéricos en el eje x (por ej., Fechas)"

Usa la función xticks .

 import matplotlib.pyplot as pl xticks=['a','b','c','d'] x=[1,2,3,4] y=[1,2,3,4] pl.plot(x,y) pl.xticks(x,xticks) pl.show() 
 import matplotlib.pyplot as plt x = ['a','b','c','d'] y = [1,2,3,4] plt.plot(y) plt.xticks(range(len(x)), x) plt.show() 

introduzca la descripción de la imagen aquí

En una nota al margen, las fechas son numéricas en este sentido (es decir, tienen un orden y espacio inherentes).

Matplotlib maneja el trazado de datos temporales bastante bien y de manera muy diferente al ejemplo anterior. Hay un ejemplo en la sección de ejemplos de matplotlib, pero se enfoca en mostrar varias cosas diferentes. En general, simplemente use plot_date o simplemente trace los datos y llame a ax.xaxis_date() (o yaxis_date ) para decirle a matplotlib que use los diversos localizadores de fechas y marcadores.