Как пометить столбчатую диаграмму с накоплением в ggplot2 без создания фрейма сводных данных?

Следующий код обеспечивает замечательную линейчатую диаграмму с накоплением

cls.grp <- gl(n=4,k=20,labels=c("group a","group b","group c", "group d"))
ser <- sample(x=c("neg","pos"),size=80,replace=TRUE, prob=c(30,70))
syrclia <- data.frame(cls.grp,ser)
ggplot(syrclia, aes(cls.grp, fill=ser))+ geom_bar()

Я ожидал, что с помощью geom_text или stat_summary я смогу пометить процент отрицательных результатов в каждой группе и поместить его на соответствующую полосу. Я пробовал много перестановок и не могу заставить его работать. Я даже пробовал вручную вводить проценты и ставить метки там, где я хочу, но это не сработало. Он ожидает 80 меток, и я хочу дать только четыре отрицательных или, возможно, 8 (если включить метки для процента положительных).

Мне действительно нужно составить агрегированный фрейм данных моего syrclia и построить его?


person Farrel    schedule 09.09.2011    source источник
comment
Можете ли вы предоставить небольшой пример того, какие метки вы хотели бы разместить на столбцах с описанием того, какие метки вы ожидаете разместить?   -  person joran    schedule 09.09.2011


Ответы (1)


geom_bar использует stat_bin по умолчанию. Таким образом, вы должны использовать stat_bin для построения чисел, сказать ему использовать geom_text и использовать только что созданный ..count.. в качестве метки.

    cls.grp <- gl(n=4,k=20,labels=c("group a","group b","group c", "group d"))
    ser <- sample(x=c("neg","pos"),size=80,replace=TRUE, prob=c(30,70))
    syrclia <- data.frame(cls.grp,ser)
    library(ggplot2)
    total <- ddply(syrclia, .(cls.grp), function(x) nrow(x))[, 2]
    ggplot(syrclia, aes(cls.grp, fill=ser))+ geom_bar() + 
      stat_bin(geom = "text", 
               aes(label = paste(
                   ..count../get("total", envir = .GlobalEnv)*100,"%")))

HTH введите здесь описание изображения

person Luciano Selzer    schedule 09.09.2011
comment
У меня небольшое осложнение. В моем реальном наборе данных нет 20 на столбец. Они являются переменным числом. Мне нужно количество, чтобы рассчитать количество на столбец и добавить знак %. - person Farrel; 13.09.2011