以对数比例绘制线条(Python)

时间:2014-07-03 21:39:28

标签: python-2.7 matplotlib plot scale

我正在尝试使用以下方法在情节中绘制虚线:

ax.plot([dt.datetime(2012,01,27,18,19),
         dt.datetime(2012,01,27,18,19)], [0, 1300], 'k--', lw=2)

当我使用linnear scale但我定义对数刻度

时,它工作正常
ax.set_yscale('log')

该行不会出现

1 个答案:

答案 0 :(得分:4)

它不会显示,因为y轴上的数字为0,将其更改为正数,例如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(其背后有一些逻辑),但是如果您尝试绘制一个infnan值的点,则不会绘制它。由线段组成的图表意味着两个线段将消失。现在,您尝试在现有点和不存在点之间绘制一条线。 (您可以通过将样式更改为&#39; o&#39;来验证这一点。)