ggalluvial中geom_text无法显示的问题求助
解决ggalluvial绘图的标签不显示及警告问题
问题背景
参考资料绘制alluvial图时遇到两个问题:运行代码弹出unused argument (na_rm = na_rm)警告,同时图中geom_text的标签完全不显示。已尝试重装ggplot2和ggalluvial包、调整参数顺序,问题仍未解决,期望生成带标签的alluvial图。
现有代码
#install.packages("ggalluvial") library(ggalluvial) ggplot(data = Sankey_Table, aes(axis1 = source, axis2 = target, y = value)) + geom_alluvium(aes(fill = source)) + ggalluvial::geom_stratum(alpha = 0.5, na_rm = TRUE) + geom_text(stat = "stratum", aes(label = after_stat(stratum))) + scale_x_discrete(limits = c("Source", "Target"), expand = c(0.15, 0.05)) + theme_void()
数据格式
> head(Sankey_Table) # A tibble: 6 × 5 source target value <chr> <chr> <dbl> 1 pre :: H0 post :: H0 31 2 pre :: H0 post :: Hlow 11 3 pre :: H0 post :: pCR 12 4 pre :: H0 post :: NA 1 5 pre :: Hlow post :: H0 28 6 pre :: Hlow post :: Hlow 29
警告信息
Warning messages: 1: Computation failed in `stat_stratum()`: unused argument (na_rm = na_rm) 2: Computation failed in `stat_stratum()`: unused argument (na_rm = na_rm)
解决方案
1. 消除警告
ggalluvial::geom_stratum()的参数为na.rm(下划线位置错误),将na_rm = TRUE修正为na.rm = TRUE即可消除警告。
2. 显示标签
标签不显示是因为geom_text的映射逻辑需要调整,同时确保stat_stratum能正确识别分层。修改后的完整代码如下:
library(ggalluvial) ggplot(data = Sankey_Table, aes(axis1 = source, axis2 = target, y = value)) + geom_alluvium(aes(fill = source)) + ggalluvial::geom_stratum(alpha = 0.5, na.rm = TRUE) + # 明确标签映射并居中显示,避免重叠 geom_text(stat = "stratum", aes(label = after_stat(stratum)), size = 3, position = position_stack(vjust = 0.5)) + scale_x_discrete(limits = c("Source", "Target"), expand = c(0.15, 0.05)) + theme_void()
如果标签仍不显示,先执行update.packages("ggalluvial")更新包到最新版本,再检查数据中是否存在异常NA值导致分层无法生成。
内容的提问来源于stack exchange,提问作者cavernam
相关产品推荐
相关产品推荐

