无法在R

时间:2019-07-18 20:38:04

标签: r ggplot2 lm

我试图在ggplot上绘制多条lm线,但似乎没有出现。我不能做它的正面或反面。我想绘制每条lm线-代表类别字段中的“中”,“高”和“低”,但没有一个出现。有人可以指导我做错什么吗?

我已经尝试过使用geom_smooth()和stat_smooth()函数,以及每个函数的方法公式的不同定义,例如(method =“ lm”,Formula = variable〜value),但无济于事。

data1B = data.frame(B_1=c(561.5806, 585.9286, 597.4839), B_2=c(780.5758, 
800.8750, 754.8788), B_3=c(767.4545, 771.6250, 778.6471), B_4=c(868.3448, 
1062.4000, 1184.4242), data.SWASH_group=c("low", "medium", "low"))

library(dplyr)
library(reshape2)

library(ggplot2)

d <- melt(data1B, id.vars="data.SWASH_group")
View(d)

# Everything on the same plot
ggplot(d, aes(variable, value, col=variable)) + geom_smooth(method="lm")+
geom_point(aes(col=data.SWASH_group, size=2)) +  
stat_smooth()

我实现的结果如下: enter image description here

我想要实现的结果看起来像这样:

enter image description here

注意:输出更加密集,因为它有更多的数据点可以绘制,而不是我在示例中出于娱乐目的提供的稀疏数据点。而且,图中的每条lm线代表一种类型的分类变量,例如在这里更具体地表示“高”和“低”。

1 个答案:

答案 0 :(得分:0)

确保变量(低和中)被识别为组

ggplot(d, aes(variable, value, col=variable, group=as.factor(variable)) +
geom_point(aes(col=data.SWASH_group, size=2)) +  
stat_smooth()