Plotly绘制基础折线图显示异常(数据无空值)如何解决
Plotly时间序列折线图乱线问题修复
问题相关代码
import plotly.express as px fig = px.line( slices, x=slices['quote_datetime'], y=slices['Close']) fig.show()
已排查确认底层数据源不存在null/NA类空值,生成的图表存在连线错乱问题,错误效果如下:
问题根因
- 参数传参不规范:
px.line第一个位置参数已经传入了完整的DataFrame对象slices,后续x、y参数只需要传入对应列的列名字符串即可。直接传入slices[列名]形式的Series时,如果DataFrame索引存在非连续、乱序的情况,会导致Plotly内部匹配坐标点时顺序错乱。 - 时间列类型不匹配:如果
quote_datetime列存储的是字符串格式而非标准datetime类型,Plotly会将其识别为普通分类值,不会自动按时间先后顺序排列坐标点,只会按照数据在DataFrame中的原始存储顺序连线,最终出现来回折返的乱线效果。
修复代码
先将时间列转换为标准datetime格式,规范传参方式,必要时提前按时间维度排序数据:
import plotly.express as px import pandas as pd # 转换时间列为标准datetime类型 slices['quote_datetime'] = pd.to_datetime(slices['quote_datetime']) # 按时间列排序,重置索引避免索引乱序问题 slices = slices.sort_values('quote_datetime').reset_index(drop=True) # 规范传参,x、y直接传入列名 fig = px.line( slices, x='quote_datetime', y='Close' ) fig.show()
运行修改后的代码即可生成连线正常的时间序列折线图。
内容的提问来源于stack exchange,提问作者khrizz
相关产品推荐
相关产品推荐

