axhline影响绘图轴

时间:2016-05-10 18:19:07

标签: python pandas matplotlib

我正在试验axhline并且我发现了不可预知的行为。当我添加axhline时,有时它会完全弄乱我的x-axis,有时则不会。{/ p>

设置

import matplotlib.pyplot as plt
import pandas as pd

idx = pd.date_range('2016-01-01', '2016-03-31')
ts = pd.Series([0. for d in idx], index=idx)
t1 = ts['2016-01'] + 1
t2 = ts['2016-02'] + 2
t3 = ts['2016-03'] + 3

第一个测试图

enter image description here

正如我所希望的那样。

问题

现在让我们添加axhline

ax = ts.plot()
ax.axhline(y=1.5)
t1.plot(ax=ax)
t2.plot(ax=ax)
t3.plot(ax=ax)
plt.ylim([-1, 4]);

enter image description here

根本不是我所期待的!

然而

如果我在最后添加axhline

ax = ts.plot()
t1.plot(ax=ax)
t2.plot(ax=ax)
t3.plot(ax=ax)
ax.axhline(y=1.5)
plt.ylim([-1, 4]);

enter image description here

没问题。

为什么!?

为什么我绘制的顺序决定了x轴的比例?

版本

import matplotlib
print pd.__version__
print matplotlib.__version__

0.18.0
1.5.1

1 个答案:

答案 0 :(得分:2)

"问题"没有错。情节。您只需要重新缩放x轴,以便时间刻度在2016年开始。如果您查看"问题"如果情节非常接近,你会发现情节的右端有三个点。

快速解决问题的方法:

ax = ts.plot()
ax.axhline(y=1.5)
t1.plot(ax=ax)
t2.plot(ax=ax)
t3.plot(ax=ax)
plt.autoscale()
plt.ylim([-1, 4])
plt.show()

如果您先创建axhline,则似乎在pyplot中,您必须在执行plt.show()之前重新缩放。