R中的ggplot2&spline()-错误:“ data”必须是数据帧,或者可以通过“ fortify()”强制使用其他对象

时间:2019-03-01 10:32:09

标签: r ggplot2 spline

数据生成的可复制示例:

n <- 9
x <- 1:n
y <- rnorm(n)
data <- data.frame(x, y)

我知道如何使用不带ggplot2的样条线绘制数据。

plot(x, y, main = paste("spline[fun](.) "))
lines(spline(x, y))

可在此处显示图:

enter image description here

但是,我想用ggplot2绘制样条线。这是一个代码示例:

ggplot(aes(x = x, y = y)) + geom_point() + geom_line(spline(data))

我得到的错误是: 错误:data必须是数据帧或fortify()可强制执行的其他对象,而不是类为uneval的S3对象 您是否偶然将aes()传递给data参数?

如果我使用

,则会引发相同的错误
ggplot(aes(data, x = x, y = y)) + geom_point() + geom_line(spline(data))

ggplot(aes(x = x, y = y)) + geom_point() + geom_line(spline(x, y))

ggplot(aes(x = data$x, y = data$y)) + geom_point() + geom_line(spline(data$x,data$y))

以下内容给出了不同的错误。在here中进行了探讨,但是我想绘制样条曲线,并且不确定如何将解决方案应用于我的情况。

library(dplyr)
data %>% ggplot(aes(x = x, y = y)) + geom_point() + geom_line(spline(x, y))

错误:mapping必须由aes()创建

1 个答案:

答案 0 :(得分:1)

可能的方法:

ggplot(data, aes(x = x, y = y)) + 
  geom_point() + 
  geom_line(data = data.frame(spline(x, y))) #+
  #ggthemes::theme_base()

54942745

问题是:spline返回list,您只需要将其转换为data.frame就可以了。