R ggplot绘图报错Error in is.data.frame(x) : object 'x' not found求解
报错原因
annotate() 函数不会继承ggplot2中映射的数据集变量,你在标注语句内直接调用sd(x)时,R会在全局环境中查找名为x的对象,而你仅在构造的临时数据框中定义了x,全局环境不存在该对象,因此触发报错。
解决方案
以下是两种可直接运行的修复方案:
方案1:提前计算统计值
先将数据集存为变量,计算得到标准差后再传入标注参数:
library(tidyverse) # 构造数据集 df <- data.frame(x = 1:3, y = 7:9) # 计算x列的标准差 sd_x <- sd(df$x) df %>% ggplot(aes(x,y)) + geom_point() + annotate("text", x = 1, y = 7, label = paste("sd(x) =", sd_x))
方案2:通过管道符引用数据集
无需额外定义变量,通过管道符的占位符.直接提取数据集的x列计算:
library(tidyverse) data.frame(x = 1:3, y = 7:9) %>% ggplot(aes(x,y)) + geom_point() + annotate("text", x = 1, y = 7, label = paste("sd(x) =", sd(.$x)))
内容的提问来源于stack exchange,提问作者Nick Vence
相关产品推荐
相关产品推荐

