Как поместить метки над geom_bar в R с помощью ggplot2

Я бы хотел, чтобы некоторые метки были уложены поверх графика geom_bar . Вот пример:

 df <- data.frame(x=factor(c(TRUE,TRUE,TRUE,TRUE,TRUE,FALSE,FALSE,FALSE))) ggplot(df) + geom_bar(aes(x,fill=x)) + opts(axis.text.x=theme_blank(),axis.ticks=theme_blank(),axis.title.x=theme_blank(),legend.title=theme_blank(),axis.title.y=theme_blank()) 

Теперь

таблица (ДФ $ х)

 FALSE TRUE 3 5 

Я бы хотел иметь 3 и 5 поверх двух баров. Еще лучше, если бы у меня были и процентные значения. Например, 3 (37.5%) и 5 (62.5%) . Вот так:

Это возможно? Если да, то как?

2 Solutions collect form web for “Как поместить метки над geom_bar в R с помощью ggplot2”

Как и во многих задачах в ggplot, общая страtagsя заключается в том, чтобы добавить то, что вы хотите добавить к графику в кадр данных, таким образом, чтобы переменные соответствовали переменным и эстетике вашего сюжета. Например, вы должны создать новый фрейм данных следующим образом:

 dfTab < - as.data.frame(table(df)) colnames(dfTab)[1] <- "x" dfTab$lab <- as.character(100 * dfTab$Freq / sum(dfTab$Freq)) 

Так что переменная x соответствует соответствующей переменной в df и так далее. Затем вы просто включаете его с помощью geom_text :

 ggplot(df) + geom_bar(aes(x,fill=x)) + geom_text(data=dfTab,aes(x=x,y=Freq,label=lab),vjust=0) + opts(axis.text.x=theme_blank(),axis.ticks=theme_blank(), axis.title.x=theme_blank(),legend.title=theme_blank(), axis.title.y=theme_blank()) 

В этом примере будет отображаться только процентное соотношение, но вы можете paste вместе счеты также через что-то вроде этого:

 dfTab$lab < - paste(dfTab$Freq,paste("(",dfTab$lab,"%)",sep=""),sep=" ") 

Обратите внимание, что в текущей версии ggplot2 опционы устарели, поэтому теперь мы будем использовать theme и element_blank .

Для построения текста на ggplot вы используете geom_text . Но я считаю полезным сначала обобщить данные, используя ddply

 dfl < - ddply(df, .(x), summarize, y=length(x)) str(dfl) 

Поскольку данные предварительно суммируются, вам нужно помнить об изменении, добавив параметр stat="identity" в geom_bar :

 ggplot(dfl, aes(x, y=y, fill=x)) + geom_bar(stat="identity") + geom_text(aes(label=y), vjust=0) + opts(axis.text.x=theme_blank(), axis.ticks=theme_blank(), axis.title.x=theme_blank(), legend.title=theme_blank(), axis.title.y=theme_blank() ) 

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

  • Как указать / таблицу данных по номерам групп из group_by?
  • Объединение вектора строк / символа
  • Как назначить результат предыдущего выражения переменной?
  • Как отлаживать «контрасты могут быть применены только к факторам с 2 или более уровнями»?
  • помещая математические символы и индексы, смешанные с регулярными буквами в R / ggplot2
  • Выращивание кадра данных эффективным образом
  • Поместите звезды на ggplot barplots и boxplots - чтобы указать уровень значимости (p-value)
  • Сплит время
  • Как искать материалы «R»?
  • Как рисовать линии за пределами участка в ggplot2?
  • Как написать trycatch в R
  • Interesting Posts

    Исправляемые значения искры из строки

    Как получить номер телефона для контактов в Android

    андроид предотвращает немедленный запуск службы сигнализации, если время тревоги прошло за день

    Java: каково большое время для объявления массива размера n?

    У декларируемых свойств требуется соответствующая переменная экземпляра?

    Cytoscape как инструменты в java для построения графика

    Пересечение всех файлов в каталоге в R, применение нескольких команд

    Судебные данные DVD-R

    Ошибка Gradle: Минимальная поддерживаемая версия Gradle – 3,3. Текущая версия – 3.2

    Избегайте наследования web.config в дочернем веб-приложении с использованием inheritInChildApplications

    Почему мое соединение отказалось при переадресации портов?

    Есть ли способ выполнить установку osx с флеш-накопителя?

    Пример Java Thread?

    Powershell эквивалентен команде unix `which`?

    Лучше ли использовать std :: memcpy () или std :: copy () в терминах производительности?

    Давайте будем гением компьютера.