如何在ggplot中从另一数据框显示单个值?
解决方法
你的代码存在两个问题:一是没给文本指定显示位置,二是标签格式未正确生成。按下面的方式修改即可实现需求:
正确代码示例
library(tidyverse) # 数据准备 df <- data.frame(junior = c(4,3,2,2,4,3,2), senior = c(2,6,3,5,2,6,3)) longdf <- df %>% pivot_longer(cols = everything(), names_to = 'class', values_to = 'rating') df2 <- data.frame(p = .002, d = 0.64) # 绘图 ggplot(data = longdf, aes(x = class, y = rating)) + geom_boxplot() + # 插入d值文本,定位到右上角角落 geom_text( data = df2, # 生成指定格式的标签 label = paste("d =", df2$d), # 用Inf定位到右上角,hjust和vjust调整位置避免超出图框 x = Inf, y = Inf, hjust = 1.1, vjust = 1.1 )
关键说明
- 标签生成:用
paste("d =", df2$d)把字符串和数值拼接成需要的格式;如果习惯更直观的语法,也可以用glue::glue("d = {d}")(需先加载glue包),直接在字符串里引用df2的d列变量即可。 - 位置控制:
x = Inf, y = Inf会把文本定位到绘图区域的右上角,hjust = 1.1和vjust = 1.1是把文本往右上角外稍挪一点,避免和箱线图元素重叠。如果想放在其他角落,比如左下角,就设置x = -Inf, y = -Inf,同时调整hjust = -0.1, vjust = -0.1。
内容的提问来源于stack exchange,提问作者wythe4
相关产品推荐
相关产品推荐

