如何从R中的平滑图中提取数据?

如何从R中的平滑图中提取数据?,r,ggplot2,R,Ggplot2,使用qplot()函数平滑绘图后,需要提取新的“平滑”数据。我无法从平滑的数据构建数据帧 绘图是平滑的,但是通过构建数据帧,我得到了一条错误消息 我用这个使情节变得平滑 qq <- qplot(x4,y4, geom='smooth', span =0.5) 我得到了信息: Error in as.data.frame.default(x[[i]], optional = TRUE, stringsAsFactors = stringsAsFactors) : cannot coe

使用qplot()函数平滑绘图后,需要提取新的“平滑”数据。我无法从平滑的数据构建数据帧

绘图是平滑的,但是通过构建数据帧,我得到了一条错误消息

我用这个使情节变得平滑

qq <- qplot(x4,y4, geom='smooth', span =0.5)
我得到了信息:

Error in as.data.frame.default(x[[i]], optional = TRUE, stringsAsFactors = stringsAsFactors) : 
  cannot coerce class ‘c("gg", "ggplot")’ to a data.frame

ggplot::geom_smooth
根据数据集的大小或用户的规格,使用不同的底层函数来计算平滑度。对于一个小数据集,它使用
stats::leuch
,因此您可以通过自己运行
stats::leuch
来获取该信息

例如,以下是基于mtcars数据集的平滑ggplot:

library(tidyverse)

plot.data <- ggplot(data = mtcars, aes(x = mpg, y = wt)) +
  geom_point() +
  geom_smooth(span = 0.5)
print(plot.data)
正如我们通过绘制它所看到的,这与ggplot自己所做的是相同的

plot.fit <- ggplot(data = loess.df, aes(x = mpg, y = fit)) +
  geom_line() +
  geom_ribbon(aes(ymin = fit - se, ymax = fit + se), alpha = 0.5)
print(plot.fit)

plot.fit可能是更直接的解决方案,可以使用
stat\u smooth

qq <- qplot(x4,y4, geom='smooth', span =0.5) + stat_smooth()
qq
plot.fit <- ggplot(data = loess.df, aes(x = mpg, y = fit)) +
  geom_line() +
  geom_ribbon(aes(ymin = fit - se, ymax = fit + se), alpha = 0.5)
print(plot.fit)
qq <- qplot(x4,y4, geom='smooth', span =0.5) + stat_smooth()