在python pandas中叠加散点图时,x轴上的时间未正确显示

时间:2018-06-28 19:09:44

标签: python pandas matplotlib subplot

我试图绘制一条趋势线,在其上叠加有离群点。离群值高于上限或低于下限。问题是,当我尝试绘制一些叠加的离群值时,索引将出错并给我破碎的图像。

我已经尝试修复了几个小时,最后发现如果我切换打印顺序,它将可以正常工作。我无法理解出了什么问题,并希望获得一些见解!谢谢!

有效的代码:

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))

校正图像:

Correct Image

代码不正确

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))

无效图片:

Not working Image

如果我删除了sp[sp.counts <= sp.lower],它将再次起作用。 (而且sp[sp.counts > sp.upper]很好!)

以下是我尝试修复以上代码但不起作用的其他方法:

  1. 使用matplotlib代替熊猫绘图
  2. 使用fig, ax = plt.subplots()来定义斧子
  3. 切换两个离群图的顺序
  4. 仅使用一种离群值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

0 个答案:

没有答案