Shiny中plotly添加hoverinfo时报Tibble列尺寸不兼容错误如何解决
报错排查与解决方法
核心问题1:hover文本参数写法错误
你当前plot_ly中text参数的写法不符合plotly的公式语法规则:不能在paste()内部为每列单独加~符号,公式标记~需要放在整个表达式的最外层,代表引用传入的data数据框的字段。
核心问题2:未处理空数据边界场景
当用户还未在花瓣长度选择器中选中任何值时,df_1()返回的是空数据框,此时x、y、color对应的列长度为0,但错误写法下生成的text长度和空数据不匹配,触发尺寸兼容报错。
具体修改方案
只需要修改output$correlation_plot部分的代码即可,修改后代码如下:
output$correlation_plot <- renderPlotly({ # 增加数据校验:只有df_1有数据时才执行后续绘图逻辑,避免空数据报错 req(nrow(df_1()) > 0) plot1 <- plot_ly(data=df_1(), x = ~Petal.Length, y = ~Petal.Width, type = 'scatter', #mode ="lines+markers", color =~Petal.Length, # 把~移到paste外层,统一引用数据框字段 text = ~paste("Sepal.Length:", Sepal.Length,"<br>", "Sepal.Width:", Sepal.Width,"<br>", "Petal.Length:", Petal.Length,"<br>", "Petal.Width:", Petal.Width,"<br>", "Species:", Species), hoverinfo = 'text' ) })
效果验证
修改后:
- 未选中花瓣长度时不会触发绘图逻辑,无报错
- 选中数据后hover提示正常显示所有自定义字段,无尺寸不匹配问题
内容的提问来源于stack exchange,提问作者Nicholas Darden
相关产品推荐
相关产品推荐

