我有以下图形:
set.seed(123456)
test1_1 <- round(rnorm(20,mean=40,sd=5),0)/100
test1_2 <- round(rnorm(20,mean=60,sd=5),0)/100
test.data <- as.data.frame(cbind(test1_1,test1_2))
test <- ggplot(test.data, aes(test1_1,test1_2))+
geom_point()+
scale_y_continuous(limits = c(0, 1)) +
scale_x_continuous(limits = c(0, 1)) + # OP missing `+`
abline(0.5,0.5)
test
现在我有了要点,它是使用以下公式创建的:
line <- function(beta_2, test1_1,test1_2){
beta_1 = (test1_2/(1-test1_1))-(test1_1/(1-test1_1))*beta_2
return(beta_1)}
output1 <- as.data.frame(matrix(0,20,1))
beta_2 <- 1
for (i in 1:nrow(test.data)){
output1[i,] <- line(beta_2,test.data[i,1],test.data[i,2])
}
output2 <- as.data.frame(matrix(0,20,1))
beta_2 <- 0
for (i in 1:nrow(ei.data)){
output2[i,] <- line(beta_2,test.data[i,1],test.data[i,2])
}
output <- cbind(output1,output2)
我想将第二个数据框中的数据添加为上面创建的图中的线(始终将每一行的点连接起来)。但是,使用
abline(output[1,1],output[1,2])
不起作用。我怎样才能做到这一点?
答案 0 :(得分:0)
abline()是基于R的语法,对于ggplot2,您需要使用geom_abline(output [1,1],output [1,2])
ggplot(test.data, aes(test1_1,test1_2)) +
geom_point()+
scale_y_continuous(limits = c(0, 1))+
scale_x_continuous(limits = c(0, 1)) +
geom_abline(slope = output[1,1],intercept = output[1,2])
注意:您的可复制对象有一个错误,其中使用ei.data而不是test.data,并且您的ggplot调用的一部分缺少+号,我只是指出这一点,以便其他人(或您)不会被抓住在没有意识到的情况下出现单独的错误。