我试图绘制一条趋势线,在其上叠加有离群点。离群值高于上限或低于下限。问题是,当我尝试绘制一些叠加的离群值时,索引将出错并给我破碎的图像。
我已经尝试修复了几个小时,最后发现如果我切换打印顺序,它将可以正常工作。我无法理解出了什么问题,并希望获得一些见解!谢谢!
有效的代码:
ax = sp[sp.counts > sp.upper].counts.plot(marker='D',linestyle='none',label='increase')
sp.plot(ax=ax)
sp[sp.counts < sp.lower].counts.plot(marker='D',linestyle='none',label='decrease')
ax.legend(bbox_to_anchor=(1, 1))
校正图像:
代码不正确
ax = sp.plot()
sp[sp.counts > sp.upper].counts.plot(marker='D',ax=ax,linestyle='none',label='upper')
sp[sp.counts <= sp.lower].counts.plot(marker='D',linestyle='none',label='lower')
ax.legend(bbox_to_anchor=(1, 1))
无效图片:
如果我删除了sp[sp.counts <= sp.lower]
,它将再次起作用。 (而且sp[sp.counts > sp.upper]
很好!)
以下是我尝试修复以上代码但不起作用的其他方法:
fig, ax = plt.subplots()
来定义斧子sp[(sp.counts < sp.lower) | (sp.counts > sp.upper)]
,这实际上可以工作,但是只有一种颜色。这是DataFrame结构:
sp.counts [sp.counts> sp.upper]
时间
2015-11-01 6369
2015-11-08 6502
2015-11-22 6505
2015-12-06 6589
2015-12-13 6674
2016-09-25 6791
2016-11-20 7051
名称:counts,dtype:int64
sp [sp.counts
时间
2015-05-31 5841
2015-12-27 5526
2016-11-27 6117
名称:counts,dtype:int64
sp.tail(5)
counts ave upper lower
时间
2017-08-27 6956 6834.25 7083.758 6584.742
2017-09-03 6794 6828.30 7075.566 6581.034
2017-09-10 6694 6815.85 7063.873 6567.827
2017-09-17 6784 6810.35 7055.943 6564.757
2017-09-24 6889 6805.70 7040.911 6570.489