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

如何在Plotly中显式设置HeatMap水平刻度范围并添加单元格分隔线?

解决方案

1. 数据预处理:补全所有20轮列

原始透视表仅包含数据中存在的轮次,导致Plotly自动扩展x轴范围。先补全1-20轮的所有列,缺失轮次填充0:

import plotly.express as px
import pandas as pd

# 生成透视表并补全1-20轮列
kptable1 = kdf.pivot_table(
    index='bowling_team', 
    columns='over', 
    values='total_runs', 
    aggfunc='sum', 
    fill_value=0
)
# 重新索引列,确保包含1到20所有轮次
kptable1 = kptable1.reindex(columns=range(1, 21), fill_value=0)

2. 绘制热力图并设置刻度与分隔线

手动指定x轴刻度范围,添加单元格分隔线:

line_fig = px.imshow(kptable1, text_auto=True)

# 限制x轴为1-20轮,添加水平分隔线
line_fig.update_xaxes(
    tickvals=list(range(1, 21)),
    ticktext=list(range(1, 21)),
    range=[0.5, 20.5],  # 锁定x轴范围,避免自动扩展
    showgrid=True,
    gridwidth=1,
    gridcolor='black'
)

# 添加垂直分隔线
line_fig.update_yaxes(
    showgrid=True,
    gridwidth=1,
    gridcolor='black'
)

# 优化背景与标题
line_fig.update_layout(
    xaxis_title='轮次',
    yaxis_title='投球队伍',
    plot_bgcolor='white'
)

return line_fig

关键说明

  • 刻度限制:通过reindex补全1-20轮列,再用range=[0.5,20.5]锁定x轴范围,配合tickvals指定显示的刻度值,彻底避免刻度超出20。
  • 单元格分隔线:开启x、y轴网格线,设置gridwidth=1和gridcolor='black',让每个单元格的边界清晰可见。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 07:13:27