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

Plotly曲面图刻度文本修改:自定义周几与时刻刻度

解决Plotly曲面图刻度文本不生效的问题

嘿,我一眼就瞅出问题所在啦!你现在是用layout.xaxis和layout.yaxis来配置刻度,但Plotly的3D曲面图的轴配置可不是放在这里的——得嵌套在layout.scene下面才行,这就是为啥你的“周一”“周二”这些文本没显示出来~

修正后的完整代码

假设你的DataFrame是7行(对应一周7天)、24列(对应一天24小时)的结构,我给你调整了代码:

import plotly.graph_objects as go
import pandas as pd

# 先定义你的刻度文本列表
Hours = [f"{h:02d}:00" for h in range(24)]  # 生成"00:00"到"23:00"
Weekdays = ["周一", "周二", "周三", "周四", "周五", "周六", "周日"]

# 你的曲面数据
data = [go.Surface(z=df.values.tolist(), colorscale='Blackbody')]

# 重点:3D图的轴配置要放在scene字典里
layout = go.Layout(
    scene=dict(
        xaxis=dict(
            tickmode='array',
            ticktext=Hours,
            tickvals=list(range(24))  # 和你的数据列索引一一对应
        ),
        yaxis=dict(
            tickmode='array',
            ticktext=Weekdays,
            tickvals=list(range(7))  # 和你的数据行索引一一对应
        ),
        zaxis=dict(title="目标变量")  # 可以给z轴加个清晰的标题
    ),
    title="按小时&日期的变量分布"
)

fig = go.Figure(data=data, layout=layout)
fig.show()

关键注意事项

  • 3D轴的配置层级:Plotly的3D图表(曲面图、散点图等)的轴参数都要放在layout.scene下,直接用layout.xaxis只会对2D图表生效,这是最容易踩的坑!
  • 刻度值匹配:确保tickvals和你的DataFrame的行/列索引完全对应。比如如果你的df行索引是1-7而不是0-6,那yaxis.tickvals就要改成[1,2,3,4,5,6,7]。
  • 列表长度一致:ticktext的元素数量必须和tickvals的数量一致,比如Weekdays要有7个元素,Hours要有24个元素,不然刻度会显示异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:27:29