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

Plotly表面图:用text参数控制hovertemplate及自定义悬浮信息

Plotly Surface图自定义悬浮信息问题解决

问题描述

需要用Plotly的surface绘制表面图(必须采用surface而非3D网格,需传入矩阵而非数据框),希望自定义悬浮信息,仅展示X*Y和X+Y的计算结果,不显示默认的x、y、z坐标。但当前使用hovertext参数时仍会显示默认坐标,且<extra></extra>标签无法生效。尝试的代码如下:

library(plotly)

mat <- 0:10 %*% t(0:10)

plot_ly() |>
  
  add_surface(z = ~mat,
              
              hovertext = paste(
                "X*Y:", mat, 
                "<br>X+Y: ", rep(0:10, each = 11) + rep(0:10, 11),
                "<extra></extra>") |>
                matrix(ncol = 11),
              
              hovertemplate = text)

解决方案

1. 移除默认的x、y、z坐标

要彻底隐藏默认坐标,需在hovertemplate中不包含任何%{x}、%{y}、%{z}变量,直接引用自定义的hovertext内容,以此覆盖Plotly的默认悬浮模板。

2. 正确使用<extra></extra>标签

<extra></extra>的作用是隐藏Plotly默认添加的额外信息(比如trace名称),它需要放在hovertemplate的末尾,而非hovertext内部。正确的用法是:将自定义悬浮内容存入hovertext,然后在hovertemplate中用%{hovertext}调用该内容,最后追加<extra></extra>来隐藏默认额外信息。

修正后的完整代码:

library(plotly)

# 生成z矩阵(X*Y的结果)
mat <- 0:10 %*% t(0:10)
# 生成X+Y的矩阵,用outer函数更简洁
x_plus_y <- outer(0:10, 0:10, `+`)

# 构造自定义悬浮文本矩阵
hover_text <- matrix(
  paste("X*Y:", mat, "<br>X+Y:", x_plus_y),
  nrow = nrow(mat),
  ncol = ncol(mat)
)

plot_ly() |>
  add_surface(
    z = ~mat,
    hovertext = ~hover_text,
    # 调用hovertext并隐藏默认额外信息
    hovertemplate = "%{hovertext}<extra></extra>"
  )

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 13:30:40