如何在Matplotlib图表中标记特定的数据点

5

我有一个情节,我想在图表上标记一些x轴的值,就像以下图片中所示,(注:这些点是我手动添加的)

看图表

我尝试了以下代码,但它并没有像我期望的那样工作。

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

作为总结,我想强调函数线上的一个点是根节点。

除非您知道-1,1,2实际上在vals中,否则无法使用markevery获得所需的绘图。因此,在此处提问时,请首先像往常一样创建一个[mcve]。接下来,值是否在vals中?valspoly是Python列表、集合还是NumPy数组?最后,您是否知道这些值在vals中的位置? - ImportanceOfBeingErnest
Vals和poly是Python列表,它们表示绘图的x和y值。 Vals的范围从-60到60。至于根的问题,它们在vals中。 - odd
1个回答

9
假设vals的取值范围是[-60,60]的整数,需要在该列表中找到[-1,1,2]的位置,并将这些位置作为参数传递给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()

或者,您也可以仅绘制这些值。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接