如何在matplotlib中绘制线图上的最大值点?

时间:2014-07-22 22:52:33

标签: python python-3.x matplotlib plot

所以我正在运行Python 3.4,并且想知道如何使用matplotlib将最大值绘制为当前线性图上的一个点。我当前的图表很简单:它有两行,y值作为分数,x值作为时间。我试图在达到最大分数时在每条单独的线上绘制一个点,并且还显示其坐标:(最佳时间,最大分数)。有谁知道matplotlib是否有办法做到这一点?提前谢谢。

1 个答案:

答案 0 :(得分:1)

我最终做的是使用两个图(time_list是x轴值,得分是y值列表):

ordered_time = [time_list for (score,time_list) in sorted(zip(score,time_list))]
best_time = ordered_time[-1]
max_coords = '('+str(best_time)+', ' + str("%.4f" % (max(score)))+')'
max_point = pl.plot(best_time, max(score), 'bo', label="(Opt. Time, Max Score)")
pl.text(best_time, max(score), max_coords)
... (insert rest of stuff for your graph)

这将找到特定线上的最大点,在其上绘制一个点,然后用其坐标标记该点。

如果你想要一个不同于坐标的不同文本标签,那么只需用你想要的任何字符串替换最后一行中的“max_coords”。

如果你想找到EACH行的最大值,那么只需要有多个x和y列表并经历相同的过程(例如,而不是“time_list”和“score”,请使用“time_list_1”,“time_list_2”,... 。和“score_1”,“score_2”......)

希望这有助于某人。