2017-04-24 3 views
0

J'essaie de tracer la date (2017/04/24) sur l'axe des x. J'ai des données de volume csv pendant une semaine, Im ajoutant le volume quotidien et les traçant contre le jour. J'ai un tableau, avec le jour spécifique, mais il n'a pas le mois et l'année.Tracer la date sur l'axe des abscisses

#DETERMINING WEEK DAYS- 
weekday_array = [] 
for i in range (len(timestamp)): 
    d = datetime.strptime(timestamp[i], "%Y-%m-%dT%H:%M:%S").day 
    weekday_array.append(d) 
#print(weekday_array) 

#TOTAL DAILY VOLUME 
daily_Vol = 0.0 
daily_total_vols = [] 
week_day =[] 
weekday_array.append(np.inf) 
day = 0 

#new_x = dates.datestr2num(date) 
for i in range(len(weekday_array)-1): 
    start = weekday_array[i] 
    next_d = weekday_array[i+1] 

    if start== next_d: 
     daily_Vol = daily_Vol + volume[i]/10 
     day = day+1 
    else: 
     week_day.append(weekday_array[i]) 
     daily_Vol = daily_Vol + volume[i]/10 
     daily_total_vols.append(daily_Vol) 
     daily_Vol = 0.0 

weekday_array.remove(np.inf) #Remove the extra value(infinity) added 

#PLOT WEEKLY VOLUME PER DAY 
fig = plt.figure(figsize=(20.0, 6.0)) 
ax = fig.add_subplot(1,1,1) 
ax.set_title('WEEKLY VOLUME USDED', fontsize=16) 
ax.set_xlabel('WEEKDAY', fontsize=12) 
ax.set_ylabel('VOLUME (litres)', fontsize=12) 
y = daily_total_vols 
x = week_day 
ax.bar(x,y,width =0.8,) 
for a,b in zip(x,y): 
    plt.text(a, b, str(b),fontsize=12) 

plt.show() 

Fondamentalement, je voudrais daily_total_vols sur l'axe des y et WEEK_DAY sur l'axe x. L'axe des x peut être 2017/04/24 ou Mo, Tu, Nous, Jeu, Ven, Sam, Dim. Merci d'avance.

Répondre

0

Je ne suis pas sûr que je comprends ce que vous recherchez, mais si vous voulez en semaine sur l'axe des x et des chiffres sur l'axe des y, vous pouvez faire:

x_days = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'] 
x = [1,2,3,4,5,6,7] 
y = [1,2,3,4,5,6,7] 

plt.xticks(x, x_days) 
plt.plot(x, y) 
plt.show() 

plt_result

+0

Ce que je J'ai la date du jour, comme à partir du 25/04/2017, j'utilise timestamp.day et je reçois 25, donc j'ai un tableau du jour week_day = [25,26,27,28,29,30,1]. pour l'instant mon intrigue parcourt simplement le volume total des jours contre le tableau ci-dessus. Je souhaite recevoir week_day = [Mar, Mer, Jeu, Ven, Sam, Dim, Lun] ou week_day = [2017-04-25,2017-04-26,2017-04-27,2017-04-28,2017 -04-29,2017-04-30,2017-05-01] – che

+0

Les données csv que je reçois ne commencent pas toujours un lundi. – che