R 关于ggplot的图标签
我正在使用以下代码生成右侧图。我想创建如左图所示的标签和垂直线的x截距值。非常感谢您的帮助R 关于ggplot的图标签,r,ggplot2,R,Ggplot2,我正在使用以下代码生成右侧图。我想创建如左图所示的标签和垂直线的x截距值。非常感谢您的帮助 ggplot(spss) + geom_line(aes(ZIdeal, ULCI), linetype="dashed", size = 1) + geom_line(aes(ZIdeal, Effect), color = "red", size = 1) + geom_line(aes(ZIdeal, LLCI),linetype="dashed
ggplot(spss) + geom_line(aes(ZIdeal, ULCI), linetype="dashed", size = 1) +
geom_line(aes(ZIdeal, Effect), color = "red", size = 1) +
geom_line(aes(ZIdeal, LLCI),linetype="dashed", size = 1,show.legend = TRUE) +
geom_vline(xintercept=c(0.78), linetype="dashed", show.legend = TRUE, size = 1)
最简单的方法是构造一个额外的小数据框来绘制标签:
labs <- data.frame(x = c(-1, rep(spss$ZIdeal[nrow(spss)], 3)) + 0.2,
y = c(1, spss$ULCI[nrow(spss)], spss$Effect[nrow(spss)],
spss$LLCI[nrow(spss)]),
labs =c(paste("When Idealism is 0.78 or more SD above mean, the",
"simple slope is no longer significant", sep = "\n"),
"95% upper limit", "Point Estimate", "95% lower limit"))
ggplot(spss) + geom_line(aes(ZIdeal, ULCI), linetype="dashed", size = 1) +
geom_line(aes(ZIdeal, Effect), color = "red", size = 1) +
geom_line(aes(ZIdeal, LLCI),linetype="dashed", size = 1,show.legend = TRUE) +
geom_vline(xintercept=c(0.78), linetype="dashed", show.legend = TRUE, size = 1) +
geom_label(data = labs, aes(x, y, label = labs), hjust = 0, label.size = 0) +
coord_cartesian(xlim = c(-2.5, 3.5)) +
theme_minimal()
labs最简单的方法是构造一个额外的小数据框来绘制标签:
labs <- data.frame(x = c(-1, rep(spss$ZIdeal[nrow(spss)], 3)) + 0.2,
y = c(1, spss$ULCI[nrow(spss)], spss$Effect[nrow(spss)],
spss$LLCI[nrow(spss)]),
labs =c(paste("When Idealism is 0.78 or more SD above mean, the",
"simple slope is no longer significant", sep = "\n"),
"95% upper limit", "Point Estimate", "95% lower limit"))
ggplot(spss) + geom_line(aes(ZIdeal, ULCI), linetype="dashed", size = 1) +
geom_line(aes(ZIdeal, Effect), color = "red", size = 1) +
geom_line(aes(ZIdeal, LLCI),linetype="dashed", size = 1,show.legend = TRUE) +
geom_vline(xintercept=c(0.78), linetype="dashed", show.legend = TRUE, size = 1) +
geom_label(data = labs, aes(x, y, label = labs), hjust = 0, label.size = 0) +
coord_cartesian(xlim = c(-2.5, 3.5)) +
theme_minimal()
labs Hi OP-你能发布你的数据集吗,spss
?最好将函数dput(spss)
的输出复制并粘贴到问题正文中(格式为代码)。谢谢嗨,OP-你能发布你的数据集吗,spss
?最好将函数dput(spss)
的输出复制并粘贴到问题正文中(格式为代码)。谢谢这就是目的。但是代码很难理解。是否有任何可用的包,以便xx_标签(95%上限,位置=结束)喜欢添加标签。@罗摩克里希纳斯代码只是告诉R标签应基于数据的x和y位置。xx\u标签(95%上限,位置=结束)
的问题是,您没有一个名为“95%上限”的对象,因此R不知道您在谈论哪一行。它必须是spss$UCLI,END
。但是没有称为END的对象,所以您需要通过执行spss$UCLI[nrow(spss)]
来告诉R END是什么意思。我想可以编写一个函数,使您能够轻松地完成所需的工作,但您的具体要求不够笼统,无法保证一个软件包。这就达到了目的。但是代码很难理解。是否有任何可用的包,以便xx_标签(95%上限,位置=结束)喜欢添加标签。@罗摩克里希纳斯代码只是告诉R标签应基于数据的x和y位置。xx\u标签(95%上限,位置=结束)
的问题是,您没有一个名为“95%上限”的对象,因此R不知道您在谈论哪一行。它必须是spss$UCLI,END
。但是没有称为END的对象,所以您需要通过执行spss$UCLI[nrow(spss)]
来告诉R END是什么意思。我想可以编写一个函数,使它能够轻松地完成您想要的事情,但是您的确切需求还不足以保证一个包。