我想用 ggplot2 生成一个散点图,它包含一条通过所有数据点的回归线(无论它们来自哪个组),但同时通过分组变量改变标记的形状。下面的代码生成了组标记,但提供了两条回归线,每组一条。
#model=lm(df, ParamY~ParamX)
p1<-ggplot(df,aes(x=ParamX,y=ParamY,shape=group)) + geom_point() + stat_smooth(method=lm)
我该如何编程?
我想用 ggplot2 生成一个散点图,它包含一条通过所有数据点的回归线(无论它们来自哪个组),但同时通过分组变量改变标记的形状。下面的代码生成了组标记,但提供了两条回归线,每组一条。
#model=lm(df, ParamY~ParamX)
p1<-ggplot(df,aes(x=ParamX,y=ParamY,shape=group)) + geom_point() + stat_smooth(method=lm)
我该如何编程?
你不应该重做你的全部aes
并geom_point
添加另一层,只需将形状移动aes
到geom_point
调用中:
df <- data.frame(x=1:10,y=1:100+5,grouping = c(rep("a",10),rep("b",10)))
ggplot(df,aes(x=x,y=y)) +
geom_point(aes(shape=grouping)) +
stat_smooth(method=lm)
编辑:
为了帮助您发表评论:
因为annotate
无论如何,对我来说,最终可能会在每个方面都有相同的标签。我喜欢制作一个迷你data.frame
版,它有我的刻面变量和刻面级别,另一列代表我要使用的标签。在这种情况下,标签数据框被调用dfalbs
。
然后使用它来标记数据框以单独标记方面,例如
df <- data.frame(x=1:10,y=1:10,grouping =
c(rep("a",5),rep("b",5)),faceting=c(rep(c("oneR2","twoR2"),5)))
dflabs <- data.frame(faceting=c("oneR2","twoR2"),posx=c(7.5,7.5),posy=c(2.5,2.5))
ggplot(df,aes(x=x,y=y,group=faceting)) +
geom_point(aes(shape=grouping),size=5) +
stat_smooth(method=lm) +
facet_wrap( ~ faceting) +
geom_text(data=dflabs,aes(x=posx,y=posy,label=faceting))