【问题标题】:How to mark specific data points in matplotlib graph如何在 matplotlib 图中标记特定数据点
【发布时间】:2021-08-02 19:29:13
【问题描述】:

我有一个图,我想在图表上标记 x 的一些值,如下图所示,(p.s. 我手动放置了点)

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

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

作为总结,我想在函数行上放一个点,表示该点是根。

【问题讨论】:

  • 您不能使用markevery 来获得所需的绘图,除非您知道-1,1,2 实际上在vals 中。所以首先,在这里提问时像往常一样创建minimal reproducible example。接下来,vals 中的值是否存在? valspoly 是 python 列表、集合还是 numpy 数组?最后,你知道vals里面那些值的位置吗?
  • Vals 和 poly 是 python 列表,它们代表绘图的 x 和 y 值。 vals 范围从 -60 到 60。至于根问题,它们在 vals 中。

标签: python matplotlib plot


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-13
    • 2019-04-26
    • 2017-04-20
    • 1970-01-01
    • 2016-09-12
    • 2021-10-13
    相关资源
    最近更新 更多