2017-07-01 61 views
0

我有一個數據框有10個值在每種5種和有2種類型。ggplot文本在每個角落與facet

df <- data.frame(x2=rnorm(100),y2=rnorm(100), type = c(rep("type a", 50), rep("type b", 50)), kind = rep(LETTERS[1:5],10)) 

我想打印每個象限中百分比值的標籤。我當前的代碼是:

ggplot(df, aes(x2, y2)) + geom_point() + 
    geom_vline(xintercept = 0) + 
    geom_hline(yintercept = 0) + 
    geom_text(data = df, aes(x2, y2, label = "")) + 
    facet_grid(type~kind) 

電流輸出:enter image description here

預期輸出(例如我展示實物的比例和類型的B,我要繪製的百分比值對所有種類和類型): enter image description here

任何建議都會很棒。謝謝!

回答

3

你可能需要計算比例外GGPLOT2,

library(dplyr) 
numbers <- df %>% group_by(type,kind) %>% mutate(cases = n()) %>% 
    add_count(x2>0,y2>0) %>% mutate(label=paste(round(n/cases*100),"%"), 
            x = ifelse(`x2 > 0`, Inf, -Inf), 
            y = ifelse(`y2 > 0`, Inf, -Inf), 
            hjust = ifelse(`x2 > 0`, 1, 0), 
            vjust = ifelse(`y2 > 0`, 1, 0)) 

ggplot(df, aes(x2, y2)) + geom_point() + 
    geom_vline(xintercept = 0) + 
    geom_hline(yintercept = 0) + 
    facet_grid(type~kind) + 
    geom_label(data=numbers, aes(label = label, x=x, y=y, vjust=vjust, hjust = hjust)) 
+0

這樣一個很好的解決方案。非常感謝@baptiste –

+0

我確定有更好的表格製作方式,但我對xtabs和co,或dplyr不熟悉。 – baptiste