Python 如何在matplotlib图形中标记特定数据点

Python 如何在matplotlib图形中标记特定数据点,python,matplotlib,plot,Python,Matplotlib,Plot,我有一个图,我想在图上标出一些x值,如下图所示,(顺便说一下,我用手画了点) 我尝试了下面的代码,但它没有像我预期的那样工作 roots = [-1,1,2] plt.plot(vals,poly,markevery=roots,label='some graph') 我猜我试图在上面发布的图片有问题;作为总结,我想在函数行上加一个点,表示点是根。假设vals是[-60,60]范围内的整数,则需要找到该列表中[-1,1,2]的位置,并使用这些位置作为标记每个的参数 import matplo

我有一个图,我想在图上标出一些x值,如下图所示,(顺便说一下,我用手画了点)

我尝试了下面的代码,但它没有像我预期的那样工作

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

我猜我试图在上面发布的图片有问题;作为总结,我想在函数行上加一个点,表示点是根。

假设
vals
[-60,60]
范围内的整数,则需要找到该列表中
[-1,1,2]
的位置,并使用这些位置作为
标记每个
的参数

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()
或者,您也可以只绘制这些值

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()

除非知道
-1,1,2
实际上在
VAL
中,否则不能使用
markevery
获得所需的绘图。因此,首先,在这里提问时,像往常一样创建一个。接下来,值是否在
VAL
中?
vals
poly
python是列表、集合还是numpy数组?最后,您知道这些值在
vals
中的位置吗?vals和poly是python列表,它们表示绘图的x和y值。VAL的范围为-60到60。至于根的问题,它们在VAL中。