Подтвердить что ты не робот

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

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

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

4b9b3361

Ответ 1

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

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

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

Легкой альтернативой может быть добавление 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"))