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

Plotly/Python中hovertemplate多字体设置及trace名称移除问题

Plotly堆叠条形图悬停文本问题解决方案

1. 给悬停文本第一行设置不同字体

Plotly支持在悬停文本中嵌入HTML标签,借助这一特性可以给第一行单独定义字体样式。具体操作:

  • 用HTML的<span>标签包裹第一行文本,通过style属性设置字体大小、粗细等样式;
  • 将trace的hoverinfo设为'text',确保仅渲染自定义的HTML文本内容。

示例代码:

import plotly.graph_objects as go

# 模拟《罗密欧与朱丽叶》角色台词数据
characters = ["罗密欧", "朱丽叶", "茂丘西奥", "劳伦斯神父"]
act_counts = {
    "第一幕": [22, 15, 18, 10],
    "第二幕": [30, 25, 8, 12],
    "第三幕": [28, 20, 0, 15]
}

fig = go.Figure()

for act, counts in act_counts.items():
    hover_texts = []
    for idx, (char, cnt) in enumerate(zip(characters, counts)):
        total = sum([act_counts[act][idx] for act in act_counts])
        # 第一行设置加粗、放大字体,其余行保持默认样式
        hover_content = (
            f"<span style='font-size:16px; font-weight:bold;'>{char}</span><br>"
            f"幕次: {act}<br>"
            f"台词数量: {cnt}<br>"
            f"总占比: {round(cnt/total*100, 1)}%"
        )
        hover_texts.append(hover_content)
    
    fig.add_trace(go.Bar(
        x=characters,
        y=counts,
        name=act,
        hovertext=hover_texts,
        hoverinfo='text'  # 仅显示自定义文本,屏蔽默认信息
    ))

fig.update_layout(barmode='stack', title="《罗密欧与朱丽叶》各角色分幕台词数量")
fig.show()

2. 移除悬停时显示的trace名称

要去掉悬停时侧边的trace名称,核心是让Plotly不渲染默认的trace标识,通过设置hoverinfo参数即可实现:

  • 将每个trace的hoverinfo设为'text'(如上述代码所示),此时只会显示你自定义的悬停文本,不会附带trace名称;
  • 若需要保留y轴数值等信息但去掉名称,可设置hoverinfo='y+text',明确排除'name'字段。

如果是用plotly.express创建图表,也可以通过custom_data结合hover_data参数自定义悬停内容,同样能避免显示trace名称。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 07:25:58