Reputation: 676
i am trying to annotate all my data points, but the text while annotating is over lapping with each other,
fig = plt.figure(figsize=(70,2))
fig.autofmt_xdate()
plt.style.use('ggplot')
axess= plt.subplot(1,1,1)
axess.plot_date(idx2,stock2,'--')
axess.set_title("Doc_ID:7377")
axess.set_ylabel('1 - Online, 0 - Offline')
for i,txt in enumerate(date_match_df['service_name_'].tolist()):
print(txt)
axess.annotate(txt,(mdates.date2num(idx2[i]),stock2[i]),)
axess.yaxis.grid(True)
axess.xaxis.grid(True)
axess.xaxis.set_major_locator(dates.MonthLocator())
axess.xaxis.set_major_formatter(dates.DateFormatter('\n\n%b-%Y'))
axess.xaxis.set_minor_locator(dates.DayLocator())
axess.xaxis.set_minor_formatter(dates.DateFormatter('\n%d-%a'))
plt.tight_layout()
fig.savefig('happynewyear.svg')
how to rotate the text?
Upvotes: 12
Views: 21480
Reputation: 2656
Additional arguments to the .annotate()
-method are passed to Text, so you can do e.g.:
for i,txt in enumerate(date_match_df['service_name_'].tolist()):
print(txt)
axess.annotate(txt,(mdates.date2num(idx2[i]),stock2[i]), ha='left', rotation=60)
Where the change from your code is the addition of ha='left', rotation=60
in the end.
Upvotes: 21