#python-2.7 #matplotlib #plot #scale
#python-2.7 #matplotlib #построение #масштаб
Вопрос:
Я пытаюсь построить пунктирную линию на графике, используя:
ax.plot([dt.datetime(2012,01,27,18,19),
dt.datetime(2012,01,27,18,19)], [0, 1300], 'k--', lw=2)
Он отлично работает, когда я использую линейный масштаб, но когда я определяю логарифмический масштаб
ax.set_yscale('log')
строка не отображается
Ответ №1:
Это не будет отображаться, потому что у вас есть число 0 на оси y, измените его на что-то положительное, например 1:
import matplotlib.pyplot as plt
import datetime as dt
fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot([dt.datetime(2012,01,27,18,19),
dt.datetime(2012,01,27,18,19)], [1, 1300], 'k--', lw=2)
ax.set_yscale('log')
plt.show()
Объяснение:
log(0) не определен. Возвращает Numpy -inf
(за которым стоит некоторая логика), но если вы попытаетесь нарисовать точку со значением inf
или nan
, она не будет нарисована. При построении графиков из линейных сегментов это означает, что два линейных сегмента исчезнут. Теперь вы попытались провести линию между существующей точкой и несуществующей точкой. (Вы можете проверить это, изменив стиль на ‘o’.)