Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

Label a line graph above each point on the line with its value python

I have a plot with a bar and line graph on different y axes. I need to label the line graph with its values just above each point on the line. I’ve tried something like this

for p in ax2.patches:
    w,h = p.get_width(), p.get_height()
    x = p.get_x()
    ax2.text(x + w/2, h * 1.1, 
             f'{h}', va='center', ha='center')

which is a structure I used to label the bar graph. I also tried the example listed on this page https://queirozf.com/entries/add-labels-and-text-to-matplotlib-plots-annotation-examples, but couldn’t figure it out since the examples are just using two series to generate the plot.

My code and graph is as follows:

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

import matplotlib.pyplot as plt
import pandas as pd

width=.7

t=pd.DataFrame({'bars':[3.4,3.1,5.1,5.1,3.8,4.2,5.2,4.0,3.6],'lines':[2.4,2.2,2.4,2.1,2.0,2.1,1.9,1.8,1.9]})
ax1 = t['bars'].plot(kind='bar',width=width,color='lightgrey')
ax2 = t['lines'].plot(secondary_y=True, color='red')
ax1.plot(label='bars')
ax2.plot(label='lines')
lines,labels=ax1.get_legend_handles_labels()
lines2,labels2=ax2.get_legend_handles_labels()
ax2.legend(lines+lines2,labels+labels2)

ax1.yaxis.grid(linestyle='dashed')
ax1.set_axisbelow(True)
ax1.set_xticklabels(('1','2','3','4','5','6','7','8','9'))
ax1.set_ylim(0,6)
ax1.set_ylabel('title1')
ax2.set_ylim(0, 2.5)
ax2.set_ylabel('title2')

plt.show()

pic

>Solution :

Try:

for x,y in t["lines"].items():
    plt.annotate(f"{y:.1f}", (x,y), textcoords="offset points", xytext=(0, 5), ha="center")
Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading