Почему я не могу поместить текст в столбчатую диаграмму с накоплением (ggplot с использованием geom_bar) без потери всех моих данных?

Я пытаюсь включить значения в свою столбчатую диаграмму с накоплением (в конце концов, я хотел бы показать проценты, но сейчас я изо всех сил пытаюсь отобразить даже значения, уже содержащиеся в фрейме данных) в фактических столбцах, чтобы показать, какие числа и сделать графику более удобной для чтения. Когда я добавляю «+ geom_text (aes (label = value))», числа появляются, но все данные (фактические столбцы) исчезают. Как я могу добавить значения, но при этом столбцы не исчезнут? И есть ли простой способ использовать другие значения (например, проценты) и поместить их в центр? Спасибо!

Вот мой код:

library(ggplot2)
library(extrafont)
library(ggthemes)


Percentage <- c(rep("100%", 2), rep("80%", 2), rep("60%", 2), rep("40%", 2), rep("20%", 2), rep("0%", 2), rep("NA", 2))
case_control <- rep(c("Cases","Controls"), 7)
value <- c(6, 0, 78, 9, 88, 7, 181, 365, 230, 307, 691, 1501, 2, 358)
del_df <- data.frame(Percentage, case_control, value)
del_df$Percentage <- factor(del_df$Percentage, levels = c("NA", "0%", "20%", "40%", "60%", "80%", "100%"))

ggplot(del_df, aes(fill = case_control, y = value, x = Percentage)) + geom_bar(position = "fill", stat = "identity")  + coord_flip() + theme_classic() + labs(x = "Gene Score Evidence Level", fill = "", y = "Cumulative Findings") + ggtitle("Deletions") 

Вот как выглядит график с приведенным выше кодом:

Когда я добавляю + geom_text(aes(label = value)) сразу после информации geom_bar(), мой график выглядит так:


person Megan    schedule 08.05.2020    source источник


Ответы (1)


Вам просто нужен аргумент позиции в geom_text:

library(ggplot)

ggplot(del_df, aes(fill = case_control, y = value, x = Percentage)) +
  geom_bar(position = "fill", stat = "identity") +
  geom_text(position = "fill",label = value) + 
  coord_flip() +
  theme_classic() +
  labs(x = "Gene Score Evidence Level", fill = "", y = "Cumulative Findings") +
  ggtitle("Deletions")

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

Или, если хотите, вы можете использовать position_fill():

ggplot(del_df, aes(fill = case_control, y = value, x = Percentage)) +
  geom_bar(position = "fill", 
           stat = "identity") +
  geom_text(position = position_fill(vjust = .5),
            label = value) + 
  coord_flip() +
  theme_classic() +
  labs(x = "Gene Score Evidence Level", fill = "", y = "Cumulative Findings") +
  ggtitle("Deletions")

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

person Ian Campbell    schedule 08.05.2020
comment
Большое спасибо! Есть ли способ разместить оба значения рядом друг с другом в центре полосы (поскольку в этом случае некоторые сегменты полосы настолько малы и, кажется, не умещаются в пространстве)? - person Megan; 11.05.2020