You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Plotly柱状图调整x轴月份顺序从一月起始的实现问题

解决方案

你遇到的问题根源有两个,对应调整即可解决:

  • 你生成的日期是从当前日期往前倒推的,提取的唯一年份列表默认从新到旧排列,直接遍历会导致年份轨迹倒序,先对年份列表做升序排序即可解决
  • Plotly的分类坐标轴默认按照数据首次出现的顺序排列刻度,你的数据最早月份是9月,所以x轴默认从9月开始,手动指定x轴的刻度顺序为1-12月的完整顺序即可修正。

修改后的完整代码如下:

import datetime
import pandas as pd
import plotly.graph_objects as go
import random

df = pd.DataFrame({})
numdays = 1000
base = datetime.datetime.today()
date_list = [base - datetime.timedelta(days=x) for x in range(numdays)]
price = [random.randint(1,10) for i in range(numdays)]
df['price'] = price
df.index = date_list
df = df.resample('MS').sum()
df['month'] = df.index.month_name()
df['month number'] = df.index.month
df['year'] = df.index.year
# 对年份列表做升序排序,解决年份倒序问题
year_list = df['year'].unique().tolist()
year_list.sort()
fig = go.Figure()

for year in year_list:
    df_aux = df[df.year==year]
    df_aux = df_aux.sort_values(by=['month number'])
    fig.add_trace(go.Bar(x=df_aux.month, y=df_aux['price'], name=year))

# 手动设置x轴刻度顺序为1月到12月的完整顺序
fig.update_xaxes(
    categoryorder='array',
    categoryarray=['January','February','March','April','May','June','July','August','September','October','November','December']
)
fig.show()

运行后x轴会按照1月到12月的顺序排列,年份轨迹也为正序,即使某一年对应月份没有数据,也会保留对应月份的空缺位置,符合展示需求。

内容的提问来源于stack exchange,提问作者dc2

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.15 13:36:07