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

如何基于变量值自定义Plotly Python的悬浮提示信息

解决Plotly Scatter悬浮提示中空字段不显示的问题

Plotly的hovertemplate本身不支持直接的条件判断逻辑,要实现空字段不显示的效果,最可靠的方式是预处理数据,为每个数据点生成自定义的悬浮提示文本,然后通过hovertext参数传递给图表。

步骤1:预处理DataFrame,生成动态悬浮文本列

利用pandas的apply方法逐行构建提示内容,仅保留非空字段的条目:

import pandas as pd
import plotly.graph_objects as go

# 读取你的数据(示例)
df = pd.read_csv('your_data_file.csv')

def build_hover_content(row):
    content_parts = []
    # 固定显示的字段
    content_parts.append(f"Request period: {row['Request period']}")
    content_parts.append(f"Taken time: {row['Taken time']}")
    # 仅当ai字段非空时添加
    if not pd.isna(row['ai']) and str(row['ai']).strip():
        content_parts.append(f"Error msg: {row['ai']}")
    # 添加logCorr字段(若该字段也可能为空,可复用上述判断逻辑)
    content_parts.append(f"LogCorr: {row['logCorr']}")
    # 用<br>拼接成多行文本
    return '<br>'.join(content_parts)

# 生成hover_text列
df['hover_text'] = df.apply(build_hover_content, axis=1)

步骤2:绘制图表时使用自定义悬浮文本

将生成的hover_text传递给go.Scatter的hovertext参数,并通过hovertemplate控制显示格式(隐藏默认的系列名称):

fig = go.Figure()

fig.add_trace(
    go.Scatter(
        x=df['Request time'],
        y=df['Taken time'],
        name="System performance",
        hovertext=df['hover_text'],
        # 直接显示hovertext内容,<extra></extra>用于隐藏默认系列名
        hovertemplate='%{hovertext}<extra></extra>',
        secondary_y=True
    )
)

fig.show()

效果说明

处理后,当ai字段为nan或空字符串时,悬浮提示中不会出现空的"Error msg"条目;只有当ai有有效值时,才会显示该条目,保证提示内容的简洁美观。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 17:45:38