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

Plotly子图X轴刻度缺失问题:如何添加小时级刻度?

解决Plotly子图小时级X轴刻度不显示问题

问题原因

你用make_subplots创建7行子图并开启shared_xaxes=True后,底部的X轴对应的是第7个子图的X轴(编号xaxis7),而非默认的xaxis,所以直接修改xaxis不会生效。另外你代码里的dtick=23会导致每23小时才显示一个刻度,这也是错误的。

解决方案

以下两种方法都可以实现小时级刻度显示:

方法一:用update_xaxes(推荐,更直观)

因为开启了X轴共享,只需修改底部子图的X轴,所有子图的X轴会同步更新:

import numpy as np

# 假设你已经创建好fig并添加了数据
fig.update_xaxes(
    tickmode='array',
    tickvals=np.arange(0, 24, 1),  # 包含0到23所有小时刻度值
    ticktext=[f"{i}h" for i in np.arange(0, 24, 1)],  # 刻度显示文本,比如"0h"、"1h"
    row=7, col=1  # 指定修改第7行第1列的X轴(底部的X轴)
)

如果想直接统一设置所有子图的X轴,也可以去掉row和col参数。

方法二:用update_layout指定xaxis7

直接在update_layout里针对xaxis7设置刻度:

import numpy as np

fig.update_layout(
    barmode='group',
    xaxis7=dict(
        tickmode='array',
        tickvals=np.arange(0, 24, 1),
        ticktext=[f"{i}h" for i in np.arange(0, 24, 1)]
    )
)

关键注意事项

  • 用tickmode='array'配合tickvals和ticktext可以精确控制每个刻度的位置和显示内容,比linear模式更适合这种自定义小时刻度的场景
  • 刻度值要覆盖0到23,所以用np.arange(0,24,1)才能包含23这个小时数
  • 因为开启了shared_xaxes=True,修改任意一个子图的X轴都会同步到所有子图,优先修改底部的X轴更符合视觉逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 23:12:37