如何使用 ggplot2 绘制 fda 对象?

How can i plot an fda object using ggplot2?

我使用 fda 包创建了名为“curve”的 fd 对象:

splinebasis = create.bspline.basis(rangeval = c(0,100), 
                                     nbasis = 23,         
                                     norder = 4) 
curve = smooth.basis(x, y, splinebasis)$fd

此时我可以通过命令轻松绘制我的 fd 对象:

plot(curve)

取得了不错的成绩

我想做的是使用 ggplot2 包绘制对象,但不幸的是我不知道如何编写 ggplot2 s.t。它使用基础和系数来 return 连续曲线 *.

这是一个使用 fda 包中的 predict 的简单解决方案。

library(fda)
set.seed(1)
x <- 0:100
y <- cumsum(rnorm(101))

splinebasis <- create.bspline.basis(rangeval = c(0,100), 
                                     nbasis = 23,         
                                     norder = 4) 
curve <- smooth.basis(x, y, splinebasis)

# Plot using base graphic engine
plot(curve$fd)

# Plot using ggplot2
library(ggplot2)   
xx <- seq(0,100,0.1)
df <- data.frame(x=xx, yhat = predict(curve, newdata=xx))
ggplot(data=df, aes(x=x, y=yhat)) +
  geom_line() +
  geom_hline(aes(yintercept=0), linetype=2) +
  labs(x="time", y="value") +
  theme_bw()