Tengo un conjunto de datos que consta de pares de fecha y valor. Quiero trazarlos en un gráfico de barras con las fechas específicas en el eje x.Cómo graficar datos contra fechas específicas en el eje x usando matplotlib
Mi problema es que matplotlib
distribuye el xticks
en todo el intervalo de fechas; y también traza los datos usando puntos.
Las fechas son todas datetime
objetos. He aquí una muestra del conjunto de datos:
data = [(DT.datetime.strptime('2010-02-05', "%Y-%m-%d"), 123),
(DT.datetime.strptime('2010-02-19', "%Y-%m-%d"), 678),
(DT.datetime.strptime('2010-03-05', "%Y-%m-%d"), 987),
(DT.datetime.strptime('2010-03-19', "%Y-%m-%d"), 345)]
Aquí está un ejemplo de código ejecutable utilizando pyplot
import datetime as DT
from matplotlib import pyplot as plt
data = [(DT.datetime.strptime('2010-02-05', "%Y-%m-%d"), 123),
(DT.datetime.strptime('2010-02-19', "%Y-%m-%d"), 678),
(DT.datetime.strptime('2010-03-05', "%Y-%m-%d"), 987),
(DT.datetime.strptime('2010-03-19', "%Y-%m-%d"), 345)]
x = [date for (date, value) in data]
y = [value for (date, value) in data]
fig = plt.figure()
graph = fig.add_subplot(111)
graph.plot_date(x,y)
plt.show()
PREGUNTA RESUMEN:
Mi situación es más como tengo una Axes
ejemplo listo (referenciado por en el código anterior) y quiero hacer lo siguiente:
- Haga que el
xticks
corresponda a los valores de fecha exacta. He oído hablar dematplotlib.dates.DateLocator
pero no tengo idea de cómo crear uno y luego asociarlo con un objeto específicoAxes
. - obtiene un control más estricto sobre el tipo de gráfico que se utiliza (barras, líneas, puntos, etc.)
Sólo un consejo: ya que su pregunta realmente es puramente sobre matplotlib y no tiene nada específico para wxWidgets, sería podría facilitar las cosas si se altera su ejemplo para usar las funciones de 'matplotlib.pyplot' y dejar las cosas wx fuera de él. –
@David: arreglado. Gracias, me di cuenta de que podría haber más personas que pueden leer 'matplotlib' +' pyplot' mejor que 'matplotlib' +' wx' – Kit