我正在尝试axhline
,但发现了不可预测的行为。当我添加axhline
时,有时它完全弄乱了我的x-axis
,有时却没有。
设定
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
第一个测试图
正是我想要的。
问题
现在让我们添加一个
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]);
根本不符合我的期望!
然而
如果我在末尾添加
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]);
没问题。
为什么!?
为什么我绘制的顺序决定了x轴的比例?
版本号
import matplotlib
print pd.__version__
print matplotlib.__version__
0.18.0
1.5.1
最佳答案
“问题”图中没有错。您只需要重新调整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()
之前必须重新缩放。关于python - 影响绘图轴的轴,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37146119/