发布
社区首页 >问答首页 >如何将cobs样条软件包生成的数据显示为ggplot2

如何将cobs样条软件包生成的数据显示为ggplot2
EN

Stack Overflow用户
提问于 2019-03-19 22:43:04
回答 1查看 84关注 0票数 1
代码语言:javascript
代码运行次数:0
复制
wt1 <- cobs(x, y, constraint= "increase", lambda = 1, pointwise = con)

二次B样条曲线的制作

plot(wt1)工作正常

但是如果我使用ggplot2,下面的错误消息就会出现

错误:data必须是数据框或fortify()强制的其他对象,而不是具有类cobs的S3对象

因此,我使用predict(wt1)从cobs中提取数据,但它只包含特定点(x,y),而不包含样条曲线。

如何使用cobs包生成的样条平滑线制作ggplot2对象?

EN

回答 1

Stack Overflow用户

发布于 2019-03-20 04:08:43

你在问题中做了一个错误的陈述,predict不返回点xy,它返回一个两列的矩阵,拟合值在第二列。

我将使用在help('cobs')的第一个示例中创建的数据。

代码语言:javascript
代码运行次数:0
复制
library(cobs)

set.seed(1234)    # Make the results reproducible

x <- seq(-1, 3, , 150)
y <- (f.true <- pnorm(2*x)) + rnorm(150)/10
con <- rbind(c( 1,min(x),0), # f(min(x)) >= 0
             c(-1,max(x),1), # f(max(x)) <= 1
             c(0,  0,   0.5))# f(0)      = 0.5

现在获取拟合的值,并将xyfit放在一个数据帧中,这样ggplot就不会抱怨了。

代码语言:javascript
代码运行次数:0
复制
wt1 <- cobs(x,y, constraint= "increase", lambda = 1, pointwise = con)

fit <- predict(wt1, x)[, 'fit']
df1 <- data.frame(x, y, fit)

ggplot(df1, aes(x, y)) +
  geom_point() +
  geom_line(aes(y = fit), colour = 'red')

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55243647

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档