2017-04-14 343 views
0

我有一个数据集,我很感兴趣,看在测试的得分和人经历事件的百分比:如何将百分比和分数添加到ggplot geom_text标签?

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

我可以用图表上的百分比这样的情节是:

ggplot(data=dat, aes(x=score, y=percentage)) + 
    geom_line() + 
    geom_text(aes(label = paste0(dat$percentage,"%"))) 

enter image description here

或者,我可以用分数这样绘制它:

ggplot(data=dat, aes(x=score, y=percentage)) + 
    geom_line() + 
    geom_text(aes(label = paste0("frac(",dat$n.event, ",", dat$n.total, 
    ")")),parse = TRUE) 

enter image description here

但是我想把它们并排放在一起。这不起作用:

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) 

我得到这个错误:

在解析(文= as.character(实验室))错误:1:3:意外输入 1:30%的压裂( 263,877) ^

谢谢你的帮忙!

回答

1

的问题是,parse=True告诉geom_text使用[R数学注释(描述在?plotmath)。在这个注释中,%是一个必须转义的特殊符号,并且空格也被忽略。

为了使%和公式的其余部分之间的和平,我们必须逃避它,使用'%',它串联使用*前一个单词,并使用~后添加一个空格。其结果是:

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) 

enter image description here

+0

有道理!像这种方式比其他答案更好,因为我不必调整两件事。谢谢! –

1

怎么是这样的:

ggplot(data=dat, aes(x=score, y=percentage)) + 
    geom_line() + 
    geom_text(aes(label = paste0(dat$percentage,"%"))) + 
    geom_text(aes(label = paste0("frac(",dat$n.event, ",", dat$n.total, 
    ")")),parse = TRUE, nudge_x = 0.0, nudge_y = -2) 

播放与nudge_xnudge_y参数,以获得标签到所需的位置

+0

这会工作。谢谢! –