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

如何在Plotly Python中绘制含时间、日期、周的多层级X轴?

用Python Plotly绘制多层级时间X轴

完全可以实现这种多层级的X轴展示,核心是利用Plotly的自定义刻度标签或多层坐标轴配置,来对应你需要的时间、日期、周层级结构。

实现思路

  • 先准备包含完整时间维度信息的数据集
  • 方案一:通过自定义ticktext,用换行符把时间区间、日期标注、日期、周标注、周数整合到单个刻度中,形成层级展示
  • 方案二:配置多个独立X轴,分别对应周数、日期、时间三个层级,再补充标注文本

代码示例(整合刻度标签方案)

import plotly.graph_objects as go
import pandas as pd

# 构造模拟数据
dates = pd.date_range(start='2024-01-01', periods=5, freq='D')
time_ranges = ['9:00-17:00'] * 5
week_numbers = ['1'] * 5
week_notes = ['(周一至周五为第1周)'] * 5
day_names = ['周一', '周二', '周三', '周四', '周五']
day_notes = [f'({tr}对应{d})' for tr, d in zip(time_ranges, day_names)]
y_data = [12, 15, 13, 17, 14]

# 创建柱状图(可替换为其他图表类型)
fig = go.Figure(data=[go.Bar(x=dates, y=y_data)])

# 配置X轴刻度,整合多层级信息
fig.update_layout(
    xaxis=dict(
        tickmode='array',
        tickvals=dates,
        # 用<br>换行区分层级,顺序对应需求的结构
        ticktext=[f'{time}<br>{day_note}<br>{day}<br>{week_note}<br>周{week}' 
                  for time, day_note, day, week_note, week in zip(time_ranges, day_notes, day_names, week_notes, week_numbers)],
        tickangle=0,
        tickfont=dict(size=10)
    ),
    title='多层级时间X轴演示',
    yaxis_title='指标数值'
)

fig.show()

进阶优化

如果需要让周数、日期层级更独立(比如周数作为顶部单独的轴),可以添加次级X轴:

# 在上述代码基础上添加次级X轴对应周数
fig.update_layout(
    xaxis2=dict(
        tickmode='array',
        tickvals=[dates[2]],  # 周数居中显示
        ticktext=['周1'],
        overlaying='x',
        side='top',
        tickfont=dict(size=12, weight='bold'),
        domain=[0, 1]
    )
)

同时可以用shapes添加水平线分隔不同周的区域,强化层级视觉效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 00:15:30