Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to mark specific data points in matplotlib graph

I have a plot that I want to mark some values of x on the graph like in the following image, (p.s. I put the dots by hand)

see the plot

I tried the following code, yet it did not work as I have expected.

roots = [-1,1,2]
plt.plot(vals,poly,markevery=roots,label='some graph')

As a wrap up, I want to put a dot on the function line which indicates that point is the root.

like image 709
odd Avatar asked Sep 08 '26 08:09

odd


1 Answers

Assuming that the vals are integers in the range of [-60,60], one would need to find the positions of [-1,1,2] in that list and use those positions as the argument to markevery.

import matplotlib.pyplot as plt

vals,poly = range(-60,60), range(-60,60)

plt.plot(vals, poly, label='some graph')
roots = [-1,1,2]

mark = [vals.index(i) for i in roots]
print(mark)
plt.plot(vals,poly,markevery=mark, ls="", marker="o", label="points")

plt.show()

Alternatively, you could also just plot only those values,

import matplotlib.pyplot as plt

vals,poly = range(-60,60), range(-60,60)

plt.plot(vals, poly, label='some graph')
roots = [-1,1,2]

mark = [vals.index(i) for i in roots]

plt.plot(roots,[poly[i] for i in mark], ls="", marker="o", label="points")

plt.show()

enter image description here

like image 186
ImportanceOfBeingErnest Avatar answered Sep 10 '26 23:09

ImportanceOfBeingErnest



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!