I'm experimenting with axhline and I'm finding unpredictable behavior. When I add an axhline sometimes it completely messes up my x-axis sometimes it does not.
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

Exactly as I wanted it.
Now let's add an 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]);

Not at all what I was expecting!
If I add the axhline at the end.
ax = ts.plot()
t1.plot(ax=ax)
t2.plot(ax=ax)
t3.plot(ax=ax)
ax.axhline(y=1.5)
plt.ylim([-1, 4]);

No problems.
Why would the order in which I plot dictate the scale of the x-axis?
import matplotlib
print pd.__version__
print matplotlib.__version__
0.18.0
1.5.1
There is nothing wrong in the "Problem" plot. You just need to rescale x-axis so that the time scale starts in 2016. If you look at the "Problem" plot very closely then you will see there are three dots at the right end of the plot.
A quick way to fix it:
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()
Seems like in pyplot if you create axhline first, you have to rescale before you do plt.show().
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With