如何在R的riverplot绘图边缘添加文本而不被截断
文本被截断是R基础绘图系统的默认裁剪机制导致的:默认状态下,所有超出绘图区域的元素都会被自动删除,你将文本放在y=0的位置,已经超出了riverplot绘图默认预留的底部边距范围。
核心解决思路
- 调整绘图边距参数,给底部留出足够放置文本的空间
- 开启跨区域绘图权限,允许文本绘制在默认绘图区域之外
完整可运行修改代码
library(riverplot) library(tidyverse) # 调整绘图参数:mar四个值分别对应底部、左侧、顶部、右侧的边距,按需调大第一个值给文本留空间 # xpd=TRUE表示允许在绘图区域外渲染元素 par(mar = c(8, 1, 1, 1), xpd = TRUE) river <- riverplot.example() # 可适当调小plot_area参数,缩小桑基图主体占比,进一步增加底部留白 test <- plot(river, plot_area = 0.8) labels <- as_tibble(distinct(test$nodes["x"])) %>% dplyr::mutate(y = 0) %>% dplyr::mutate(label = "你的 \n 文本 \n 内容") # 也可以在text函数内单独加xpd=TRUE参数,和全局par设置效果一致 text(labels$x, labels$y, labels = labels$label, cex = 1, pos = 1, xpd = TRUE)
调整技巧
- 如果文本仍被截断,继续调大
mar的第一个数值即可,三行文本一般设置为7~10即可满足需求 - 可以适当降低
y参数的赋值(比如设为-0.05),让文本整体下移,避免和桑基图底部元素重叠 - 若不需要修改全局绘图参数,仅保留text函数内的
xpd=TRUE也可以实现相同效果
内容的提问来源于stack exchange,提问作者PaulB
相关产品推荐
相关产品推荐

