使用Plotly的px.bar绘图时如何强制X轴日期保持数据框原有顺序
问题原因
Plotly 默认会将格式符合日期特征的 X 轴字段自动识别为时间类型,按时间逻辑排序,会忽略原始数据中跳过非交易日、自定义排序的规则,导致最终X轴顺序和数据框的原始顺序不一致。
解决方案
你可以任选以下任意一种方法解决问题:
方案1:修改数据框列属性(全局生效)
先将DATE列转为有序分类类型,顺序严格匹配原始数据的出现顺序,之后再执行原有绘图逻辑即可,后续所有基于该数据框的绘图都会自动沿用该排序规则:
import pandas as pd # 把DATE列设为有序分类,顺序完全匹配原始数据的出现顺序 dfff['DATE'] = pd.Categorical(dfff['DATE'], categories=dfff['DATE'].unique(), ordered=True) # 执行你原来的绘图代码 fig1 = px.bar(dfff, x="DATE", y="Profit/Loss", color = "Marker", color_discrete_map = "identity").update_layout(showlegend=False, title_x=0.5)
方案2:仅修改绘图配置(不改动原始数据)
不需要修改原始数据,只需要在更新布局时强制指定X轴的排序规则,仅对当前绘图生效:
fig1 = px.bar(dfff, x="DATE", y="Profit/Loss", color = "Marker", color_discrete_map = "identity") # 新增X轴排序配置 fig1.update_layout( showlegend=False, title_x=0.5, xaxis={ "type": "category", "categoryorder": "array", "categoryarray": dfff["DATE"].unique() } )
内容的提问来源于stack exchange,提问作者The Dude
相关产品推荐
相关产品推荐

