R-使用ggplot创建断层扫描图



我有以下图表:

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])

不起作用。我怎样才能做到这一点?

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调用的一部分缺少+号,我只是指出这一点,这样其他人(或您(就不会在没有意识到的情况下陷入单独的错误。

最新更新