r ggplot绘制边界线,其下所有值的95%

时间:2018-09-12 22:27:55

标签: r ggplot2

我正在尝试在图形上绘制边界线。我目前正在使用以下函数进行绘图,该函数使用样条函数获得95%的间隔:

g <- ggplot(m17d3, aes(x=Carbon, y=yield, col=Node, shape=Node)) + 
    geom_point() +
    scale_color_manual(values=graypal) + 
    scale_shape_manual(values=c(2,17,15,18,0,4,3,1,16)) +
    ylab(expression(paste("Yield (kg/",ha^{-1},")"))) +
    xlab("Carbon (% by weight)") +
    theme(legend.position="none") +
    geom_smooth(aes(group=1), se=T, method=lm,
                formula = y ~ splines::bs(x,2), span=0.5, level=0.95) +
    ylim(c(0,9000))

哪个给我下图:enter image description here

我想将x轴分成10个并选择/绘制平均值为+ 3 s.t.d的点。及以上(红色,为稍微偏离的位置而感到抱歉): enter image description here

谢谢。

2 个答案:

答案 0 :(得分:0)

能否将红色函数的值添加为数据框中的列?然后,您可以在同一图上绘制点和线。 mtcars一个简单的例子...

DATEVALUE(LEFT(A1,10)) + TIMEVALUE(RIGHT(LEFT(A1,16),5))

答案 1 :(得分:0)

所以我设法用这个来绘制它:

m17carbon$group <- as.factor(as.numeric(cut(m17carbon$Carbon, 30)))
summar_carb <- m17carbon 
%>% group_by(group) 
%>% summarise(y_mean=mean(yield), y_sd=sd(yield),c_mean =mean(Carbon,na.rm=T) ,n =n())

summar_carb$yield_2sd <- summar_carb$y_mean + summar_carb$y_sd*2

g <- ggplot() 
+ geom_point(data=m17d3, aes(x=Carbon, y=yield, col=Node, shape=Node)) 
+ scale_color_manual(values=graypal) 
+ scale_shape_manual(values=c(2,17,15,18,0,4,3,1,16)) 
+ ylab(expression(paste("Yield (kg/",ha^{-1},")"))) +xlab("Carbon (% by weight)") 
+ ggtitle("Yield potential from soil organic carbon") 
+ theme(plot.title = element_text(hjust = 0.5))

g + geom_smooth(data=summary_c, aes(x=c_mean, y=yield_2sd), 
               se=FALSE, method=lm, formula = y ~ splines::bs(x,6))

结果是: enter image description here