I tried a lot and for now these hacks work. Await a more Pythonic and consistent solutions.
Solution to labeling problems:
def correct_labels(ax):
labels = [item.get_text() for item in ax.get_xticklabels()]
days=[label.split(" ")[0] for label in labels]
months=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]
final_labels=[]
for i in range(len(days)):
a=days[i].split("-")
final_labels.append(a[2]+"
"+months[int(a[1])-1])
ax.set_xticklabels(final_labels)
Also while plotting i make the following change
ax=df.plot(kind='bar',rot=0)
This makes the labels at 0 rotation.
For finding weekends and highlighting them, i wrote the following two functions:
def find_weekend_indices(datetime_array):
indices=[]
for i in range(len(datetime_array)):
if datetime_array[i].weekday()>=5:
indices.append(i)
return indices
def highlight_weekend(weekend_indices,ax):
i=0
while i<len(weekend_indices):
ax.axvspan(weekend_indices[i], weekend_indices[i]+2, facecolor='green', edgecolor='none', alpha=.2)
i+=2
Now, the plot looks much more useful and covers these use cases.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…