Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 关于ggplot的图标签_R_Ggplot2 - Fatal编程技术网

R 关于ggplot的图标签

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

我正在使用以下代码生成右侧图。我想创建如左图所示的标签和垂直线的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", 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是什么意思。我想可以编写一个函数,使它能够轻松地完成您想要的事情,但是您的确切需求还不足以保证一个包。