2017-04-14 352 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

這會工作。謝謝! –