我不能用逗号分隔两个注释标签
I cannot separate two annotate labels with a comma
首先,我是初学者 R 用户。我想在我的图表中添加 R 方和 p 值。但是,在一行中只用逗号分隔。附件是我正在尝试使用的代码。
ggplot(data, aes(x,y))+
geom_point(shape=1,size=4)+
stat_smooth(method="lm",size=0.6,se=FALSE,colour="black")+
annotate("text",x=30,y=0.45,label=c("italic(r^{2}==0.151)","p==0.226"),parse=TRUE)+
theme_bw(base_size = 12)
但是,我收到此错误:
Error: Aesthetics must be either length 1 or the same as the data (1):
label
谢谢!
这有效,但它不会给你一个逗号,因为逗号会混淆公式解析器。
library(ggplot2)
set.seed(123)
n <- 100
data <- data.frame(x=(40+10*rnorm(n)),y=-0.2+0.5*rnorm(n))
ggplot(data)+
geom_point( aes(x,y),shape=1,size=4)+
stat_smooth(method="lm",size=0.6,se=FALSE,colour="black")+
annotate("text",x=c(30,37),y=c(0.45,0.43),label=c("italic(r^{2}==0.151)","p==0.226"),
parse=TRUE) +
theme_bw(base_size = 12)
这是图表。
请注意,您的错误出现是因为您在 annotate
命令中给它一个长度为 2 的向量,但 x
和 y
参数的长度仅为 1。我调整了它们,但我认为它会更好。
要获得逗号,您可以将其分成两个 annotate
层,例如 thi:
library(ggplot2)
set.seed(123)
n <- 100
data <- data.frame(x=(40+10*rnorm(n)),y=-0.2+0.5*rnorm(n))
ggplot(data)+
geom_point( aes(x,y),shape=1,size=4)+
stat_smooth(method="lm",size=0.6,se=FALSE,colour="black")+
annotate("text",x=30,y=0.45,label="italic(r^{2}==0.151)", parse=T) +
annotate("text",x=36,y=0.43,label=", p==0.226",parse=F) +
theme_bw(base_size = 12)
产生这个:
不过个人觉得太麻烦了。不用逗号。尽管可能有一种方法可以通过转义序列或其他方式在公式中获取它。
当您想将多个表达式解析为单个表达式时,可以使用 paste
将这些表达式放在一行中。正如另一个答案中所解释的那样,现在您给出了 annotate
两个不同的表达式,但只有一组 x、y 坐标,这导致了错误。
没有逗号,单个表达式可能看起来像
paste("italic(r^{2}) ==", 0.151, "~p==.226")
这就是您要在 annotate
中放置的标签。附加波浪号在第一个和第二个表达式之间形成 space。
要包含逗号,您需要在 plotmath 中 list
。在 plotmath 中,list
表示逗号分隔列表(请参阅 ?plotmath
了解所有可用功能)。从本质上讲,这意味着将整个表达式包装在 list
内 paste
.
paste("list(italic(r^{2}) ==", 0.151, ", p==.226)")
因此您的注释代码将是
+ annotate("text", x=30, y=0.45, label=paste("list(italic(r^{2}) ==", 0.151, ", p==.226)"), parse=TRUE)
除了 aosmith 的解决方案外,只需尝试以下解决方案:
library(ggplot2)
set.seed(123)
n <- 100
data <- data.frame(x=(40+10*rnorm(n)),y=-0.2+0.5*rnorm(n))
ggplot(data, aes(x,y))+
geom_point(shape=1,size=4)+
stat_smooth(method="lm",size=0.6,se=FALSE,colour="black") +
annotate(geom = "text",
x = 30, y = 0.45,
parse = TRUE,
label = "italic(r)^{2}==0.151*','~italic(p)==0.226")
enter image description here
首先,我是初学者 R 用户。我想在我的图表中添加 R 方和 p 值。但是,在一行中只用逗号分隔。附件是我正在尝试使用的代码。
ggplot(data, aes(x,y))+
geom_point(shape=1,size=4)+
stat_smooth(method="lm",size=0.6,se=FALSE,colour="black")+
annotate("text",x=30,y=0.45,label=c("italic(r^{2}==0.151)","p==0.226"),parse=TRUE)+
theme_bw(base_size = 12)
但是,我收到此错误:
Error: Aesthetics must be either length 1 or the same as the data (1): label
谢谢!
这有效,但它不会给你一个逗号,因为逗号会混淆公式解析器。
library(ggplot2)
set.seed(123)
n <- 100
data <- data.frame(x=(40+10*rnorm(n)),y=-0.2+0.5*rnorm(n))
ggplot(data)+
geom_point( aes(x,y),shape=1,size=4)+
stat_smooth(method="lm",size=0.6,se=FALSE,colour="black")+
annotate("text",x=c(30,37),y=c(0.45,0.43),label=c("italic(r^{2}==0.151)","p==0.226"),
parse=TRUE) +
theme_bw(base_size = 12)
这是图表。
请注意,您的错误出现是因为您在 annotate
命令中给它一个长度为 2 的向量,但 x
和 y
参数的长度仅为 1。我调整了它们,但我认为它会更好。
要获得逗号,您可以将其分成两个 annotate
层,例如 thi:
library(ggplot2)
set.seed(123)
n <- 100
data <- data.frame(x=(40+10*rnorm(n)),y=-0.2+0.5*rnorm(n))
ggplot(data)+
geom_point( aes(x,y),shape=1,size=4)+
stat_smooth(method="lm",size=0.6,se=FALSE,colour="black")+
annotate("text",x=30,y=0.45,label="italic(r^{2}==0.151)", parse=T) +
annotate("text",x=36,y=0.43,label=", p==0.226",parse=F) +
theme_bw(base_size = 12)
产生这个:
不过个人觉得太麻烦了。不用逗号。尽管可能有一种方法可以通过转义序列或其他方式在公式中获取它。
当您想将多个表达式解析为单个表达式时,可以使用 paste
将这些表达式放在一行中。正如另一个答案中所解释的那样,现在您给出了 annotate
两个不同的表达式,但只有一组 x、y 坐标,这导致了错误。
没有逗号,单个表达式可能看起来像
paste("italic(r^{2}) ==", 0.151, "~p==.226")
这就是您要在 annotate
中放置的标签。附加波浪号在第一个和第二个表达式之间形成 space。
要包含逗号,您需要在 plotmath 中 list
。在 plotmath 中,list
表示逗号分隔列表(请参阅 ?plotmath
了解所有可用功能)。从本质上讲,这意味着将整个表达式包装在 list
内 paste
.
paste("list(italic(r^{2}) ==", 0.151, ", p==.226)")
因此您的注释代码将是
+ annotate("text", x=30, y=0.45, label=paste("list(italic(r^{2}) ==", 0.151, ", p==.226)"), parse=TRUE)
除了 aosmith 的解决方案外,只需尝试以下解决方案:
library(ggplot2)
set.seed(123)
n <- 100
data <- data.frame(x=(40+10*rnorm(n)),y=-0.2+0.5*rnorm(n))
ggplot(data, aes(x,y))+
geom_point(shape=1,size=4)+
stat_smooth(method="lm",size=0.6,se=FALSE,colour="black") +
annotate(geom = "text",
x = 30, y = 0.45,
parse = TRUE,
label = "italic(r)^{2}==0.151*','~italic(p)==0.226")
enter image description here