Как нарисовать прямоугольник над определенной областью в графике matplotlib

У меня есть график, вычисленный по некоторым данным, втянутый в matplotlib. Я хочу нарисовать прямоугольную область вокруг глобального максимума этого графика. Я попробовал plt.axhspan, но прямоугольник, кажется, не появляется, когда я вызываю plt.show()

Итак, как прямоугольная область может быть нарисована на графике matplotlib? Благодаря!

Наиболее вероятная причина заключается в том, что вы использовали единицы данных для аргументов x при вызове axhspan. Из документов функции (мой акцент):

y находятся в единицах данных, а х-координаты находятся в осях (относительные 0-1) единиц .

Таким образом, любой прямоугольник, простирающийся слева от 0 или справа от 1, просто оттягивается.

plt.gca альтернативой может быть добавление Rectangle к вашей оси (например, через plt.gca и add_patch ); Rectangle использует единицы данных для обоих измерений. Ниже будет добавлен серый прямоугольник с шириной и высотой 1 с центром в (2,3):

 from matplotlib.patches import Rectangle someX, someY = 2, 3 currentAxis = plt.gca() currentAxis.add_patch(Rectangle((someX - .5, someY - .5), 1, 1, facecolor="grey"))