Plotly绘图出现异常直线,Matplotlib无此问题,求排查原因
分析与解决方案
这可不是Plotly的bug哦,问题根源出在数据的日期排序上~
为啥会出现异常直线?
你请求MOEX数据的时候,参数里加了sort_order_desc=desc,拿到的数据是按交易日期降序排列的——最新的日期排在最前面,最早的在最后。Plotly画折线图的时候,是严格按照你给的x轴顺序来连接点的,日期逆序的话,折线就会从最新的日期往最早的画,每个指标系列都是这么来,自然就出现了那些看起来“跳来跳去”的直线。而Matplotlib比较贴心,默认会自动给x轴的日期做排序,所以你用它画的时候就没这问题。
怎么修复?
很简单,把数据按Date列升序排好再绘图就行:
# 按日期正序排列 df = df.sort_values('Date') # 再重新绘图 plot([{ 'x': df['Date'], 'y': df[col], 'name': col } for col in df.columns[1:]]) df.iplot()
额外验证步骤
你可以先打印下数据的首尾日期,确认是不是逆序的:
print("前5条数据的日期:") print(df['Date'].head()) print("\n后5条数据的日期:") print(df['Date'].tail())
排序之后,日期就会从最早到最新依次排列,折线图就会按正常的时间顺序绘制,那些异常直线也就消失啦。
内容的提问来源于stack exchange,提问作者tallsamurai
相关产品推荐
相关产品推荐

