Jac*_*tis 5 parsing r ggplot2 geom-text direct-labels
我有一个数据集,我有兴趣查看测试分数和经历事件的人的百分比:
dat <- data.frame(score = 1:7,
n.event = c(263,5177,3599,21399,16228,10345,1452),
n.total = c(877,15725,13453,51226,32147,26393,7875),
percentage = c(30,33,27,42,50,39,18))
Run Code Online (Sandbox Code Playgroud)
我可以用图表上的百分比来绘制它,如下所示:
ggplot(data=dat, aes(x=score, y=percentage)) +
geom_line() +
geom_text(aes(label = paste0(dat$percentage,"%")))
Run Code Online (Sandbox Code Playgroud)
或者我可以用这样的分数绘制它:
ggplot(data=dat, aes(x=score, y=percentage)) +
geom_line() +
geom_text(aes(label = paste0("frac(",dat$n.event, ",", dat$n.total,
")")),parse = TRUE)
Run Code Online (Sandbox Code Playgroud)
但我想把它们并排放置。这不起作用:
ggplot(data=dat, aes(x=score, y=percentage)) +
geom_line() +
geom_text(aes(label = paste0(dat$percentage,"%","frac(",dat$n.event,
",", dat$n.total, ")")),parse = TRUE)
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
解析错误(text = as.character(lab)) : :1:3: 意外输入 1: 30%frac(263,877) ^
感谢您的帮助!
问题在于parse=True告诉geom_text使用 R 数学注释(在 中描述?plotmath)。在这个注解中,%是一个必须转义的特殊符号,同样,空格也被忽略。
为了%与公式的其余部分保持和平,我们必须对它进行转义,使用'%',将其连接到前一个单词 using *,并在 using 后添加一个空格~。结果是:
ggplot(data=dat, aes(x=score, y=percentage)) +
geom_line() +
geom_text(aes(label = paste0(dat$percentage,"*\'%\'~","frac(",dat$n.event,
",", dat$n.total, ")")),parse = TRUE)
Run Code Online (Sandbox Code Playgroud)