Как уже упоминалось, 0 -> -inf
в логарифмическом масштабе.Таким образом, любое построенное значение, которое было бы меньше или равно нулю, было бы проблематично (требуя бесконечного ylim в лог-пространстве).Эта проблема существует независимо от того, используете ли вы fill_between () или нет.
К счастью, matplotlib предоставляет способ справиться с этим.В поведении по умолчанию matplotlib маскирует значения каждого значения, меньшего или равного нулю.В вашем примере это означает, что вся ваша линия y=0
замаскирована и исключена из многоугольника, определяющего заполненную область между ними.В результате полигон просто закрывается, рисуя линию от (100,10)
вниз и влево до (0,0)
.Другой вариант - обрезать значения.В этом случае они установлены на 1e-300
и не учитываются при определении яркости графика.Таким образом, чтобы получить желаемый результат, выполните следующие действия:
plt.yscale('log', nonposy='clip')