tiempo real matrices lineas graficos graficas graficar encimar ejes dibujar crear coordenadas como python matplotlib plot pandas

python - real - Trazar gráfico de líneas múltiples usando pandas y matplotlib



matplotlib ejes (4)

Tengo los siguientes datos en un marco de datos de pandas

date template score 0 20140605 0 0.138786 1 20140605 1 0.846441 2 20140605 2 0.766636 3 20140605 3 0.259632 4 20140605 4 0.497366 5 20140606 0 0.138139 6 20140606 1 0.845320 7 20140606 2 0.762876 8 20140606 3 0.261035 9 20140606 4 0.498010

Para cada día habrá 5 plantillas y cada plantilla tendrá una puntuación.

Quiero trazar la fecha en el eje x y puntuar en el eje y y un gráfico de líneas separado para cada plantilla en la misma figura.

¿Es posible hacer esto usando matplotlib?


Puede usar un enfoque como el siguiente. Puede simplemente cortar el marco de datos de acuerdo con los valores de cada plantilla, y luego utilizar las fechas y puntajes de la trama.

from pandas import * import matplotlib.pyplot as plt import matplotlib.dates as mdates import datetime as dt #The following part is just for generating something similar to your dataframe date1 = "20140605" date2 = "20140606" d = {''date'': Series([date1]*5 + [date2]*5), ''template'': Series(range(5)*2), ''score'': Series([random() for i in range(10)]) } data = DataFrame(d) #end of dataset generation fig, ax = plt.subplots() for temp in range(5): dat = data[data[''template'']==temp] dates = dat[''date''] dates_f = [dt.datetime.strptime(date,''%Y%m%d'') for date in dates] ax.plot(dates_f, dat[''score''], label = "Template: {0}".format(temp)) plt.xlabel("Date") plt.ylabel("Score") ax.legend() plt.show()


Puede usar el método groupby:

data.groupby("template").plot(x="date", y="score")


Puede agregar la leyenda de acuerdo con los grupos con:

plt.legend(pr[''template''], loc=''best'')


Creo que la forma más fácil de trazar estos datos con todas las líneas en el mismo gráfico es pivotar de manera que cada valor de "plantilla" sea una columna:

pivoted = pandas.pivot_table(data, values=''score'', columns=''template'', index=''date'') # Now there will be an index column for date and value columns for 0,1,2,3,4 pivoted.plot()