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