2016-09-28 25 views
0

我想用ggplot绘制一个散点图,其中geom_smooth()以45度角与我的数据中心交叉,而不是自动绘制。如何在散点图中绘制直线的交叉中心数据?

正如它在这里显示的那样,geom_smooth()有很小的斜率,我改变了不同的方法lm,auto等,但没有区别。

geom_smooth(color = "black", alpha = 0.5, method = "lm", se = F) 

我该如何画出正好穿过粉红色圆点中间的线?

enter image description here

+0

你想要只穿过粉红色的点中间的线?现在它看起来像geom_smooth正在查看所有的数据(蓝色和粉红色)也许尝试修剪你传递给geom smooth的数据参数只有粉红色的组 – Nate

+0

是的,它跨所有数据,我只是改变了颜色函数基于价值上下,但它不想削减数据,因为我需要2个其他组。 – user3616494

+0

对,您不必丢失任何数据,只需调整您传递给geom_smooth的数据即可。像这样:'geom_smooth(data = filter(df,value ==“up”),...)'如果你添加一个dput(your_data)它会更容易帮助 – Nate

回答

1

你要这样呢?

geom_abline(intercept = 0, slope = 1) 

此无线本地环路绘制一个45度角,通过0

进了线我认为是geom_smooth计算回归FR的所有点。尝试删除所有color参数以获得平滑的组。你可以检查不同的地块

a <- data.frame(x = c(1:10,2:11),y = c(2:11,1:10), label = c(rep("a",10),rep("b",10))) 

ggplot(a, aes(x,y)) + geom_point(aes(color = label)) + geom_smooth(aes(color = label)) 
ggplot(a, aes(x,y)) + geom_point(aes(color = label)) + geom_smooth(color="black") 
+0

感谢它的工作,'geom_abline(截距= 0,斜率= 1)'工作正常,但它从一个角落到另一个,有什么办法让这条线开始和结束像'geom_smooth'。 – user3616494

+0

是的,将截距改为所需的点。 –

0
geom_smooth(aes(group = type)) 

这将给出每一类型不同的曲线。然后,您可以弄清楚如何排除其他人,如果你想

0
library(ggplot2) 
n <- 300 
x <- seq(0,100,,n) 
type <- factor(c(0,1)[sample(1:2, n, replace = TRUE)]) 
y <- 4 + 2*x + rnorm(n, sd=10) - 10*as.numeric(type) 
df <- data.frame(x=x, y=y, type=type) 
plot(y~x, df, bg=c("blue", "pink")[df$type], pch=21) 

bp <- ggplot(df, aes(x = x, y = y, col=type)) 
bp + 
    geom_point() + 
    geom_smooth(color = "black", alpha = 0.5, method = "lm", se = F) + 
    geom_smooth(aes(group = type), data = subset(df, type==0), se=F) 

enter image description here