2017-10-19 9 views
0

J'ai le code suivant pour produire un graphique à barres des précipitations quotidiennes pour un mois donné sur plusieurs années.Ajouter une ligne moyenne à un graphique à barres en utilisant read_excel, pandas, matplotlib

df=pd.read_excel(("C:/Filepath/RainData.xls"), \ 
      sheetname=sheet,\ 
      header=0,\ 
      parse_cols="B:BD",\ 
      na_values='T') 

precip = df.loc[31, :] 


precipavg=((sum(precip[1:]))/(len(precip[1:]))) 
print(precipavg) 

df.head(0) 
fig,ax= plt.subplots() 

precip.plot(kind="bar",ax=ax, color='g',figsize=(15,7)) 

plt.minorticks_on() 
ax.tick_params(axis='x',which='minor',bottom='off') 
ax.set_xlabel("Year") 
ax.set_ylabel("Precipitation") 
ax.set_title((filename+" Precipitation"), fontsize=20) 

Je voudrais puis ajouter au-dessus de ce graphique à barres une seule ligne indiquant les précipitations avergae pour le mois. Je l'ai calculé en utilisant la ligne de précipavg ci-dessus. Merci.

Répondre

0

Vous pouvez utiliser axhline comme suit:

import matplotlib.pyplot as plt 
import pandas as pd 
import numpy as np 

# dummy data 
df = pd.DataFrame(np.random.random(size=(20, 1)), columns=["rain"]) 

# your plot setup 
fig,ax= plt.subplots() 

df.plot(kind="bar", ax=ax, color='g',figsize=(15,7)) 

plt.minorticks_on() 
ax.tick_params(axis='x',which='minor',bottom='off') 
ax.set_xlabel("Year") 
ax.set_ylabel("Precipitation") 
ax.set_title(("Precipitation"), fontsize=20) 

# use axhline 
mean = df["rain"].mean() 
ax.axhline(mean) 

enter image description here