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

ggplotly映射空首层级因子至frame时数据异常,是否为已知Bug?

R语言plotly包动画映射factor变量的Bug反馈及临时解决方法

Bug现象说明

在使用ggplot2的frame美学映射创建动画图表,再通过ggplotly()转换为交互式动画时,若frame绑定的是存在空层级的factor变量,会出现两种异常:

  • 当首层级无数据时,ggplotly生成的动画无任何数据显示
  • 当非首层级无数据时,切换到该空层级会错误显示其他层级的数据

复现代码

library(ggplot2)
library(plotly)
library(dplyr) # 需加载dplyr以使用filter和mutate

df <- data.frame(
  x = c(0, 1, 2, 0, 1, 2, 0, 1, 2),
  y = c(0, 1, 2, 1, 2, 3, 3, 4, 5),
  f = factor(c("A", "A", "A", "B", "B", "B", "C", "C", "C"))
)

# 移除不同层级数据的图表
no_A <- filter(df, f != "A") |> ggplot(aes(x = x, y = y, frame = f)) + geom_line() + ggtitle("no_A")
no_B <- filter(df, f != "B") |> ggplot(aes(x = x, y = y, frame = f)) + geom_line() + ggtitle("no_B")
no_C <- filter(df, f != "C") |> ggplot(aes(x = x, y = y, frame = f)) + geom_line() + ggtitle("no_C")

测试异常结果

  • ggplotly(no_A):切换到滑块的B或C层级时,无任何数据显示
  • ggplotly(no_B):先切换到C层级后再切回B层级,B层级会错误显示C层级的数据
  • ggplotly(no_C):先切换到B层级后再切回C层级,C层级会错误显示B层级的数据

临时解决方法

将绑定frame的factor变量转换为字符型即可避免该问题,修改代码如下:

df <- mutate(df, f = as.character(f))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 05:12:38