如何将 geom_label 放入 geom_bar

How to put geom_label in a geom_bar

我正在用这段代码做这张图

ggplot(c_clinicos) +
 aes(x = Condición, fill = Estado, weight = Conteo) +
 geom_bar() +
 scale_fill_manual(values = list(
 Ausente = "#FF1100", Presente = "#538FF6")) +
  labs(x = "Condición clínica", y = "Nº Personas. ", 
       title = "Distribución de la presencia por enfermedad", subtitle = "Muestra de 810 pacientes", fill = "Estado:")  +
 coord_flip() +
 theme_linedraw()

我想为每个条(蓝色和红色)得到一个小方块,告诉我有多少人和百分比。我一直在尝试使用 geom_label,但我做不到。

我正在使用这个数据:

structure(list(Condición = c("Cianosis Aguda", "Cianosis Aguda", 
"Gassping", "Gassping", "FR mayor de 40 o menor de 6 rpm", "FR mayor de 40 o menor de 6 rpm", 
"Oliguria que no responde a volumen y uso de diuréticos", "Oliguria que no responde a volumen y uso de diuréticos", 
"Transtornos de la coagulación", "Transtornos de la coagulación", 
"Pérdida de la conciencia mayor de 12 horas", "Pérdida de la conciencia mayor de 12 horas", 
"Pérdida de la conciencia y ausencia de pulso y latidos cardíacos.", 
"Pérdida de la conciencia y ausencia de pulso y latidos cardíacos.", 
"Stroke", "Stroke", "Parálisis total o convulsiones incontrolables", 
"Parálisis total o convulsiones incontrolables", "Ictericia más preeclampsia", 
"Ictericia más preeclampsia"), Estado = c("Presente", "Ausente", 
"Presente", "Ausente", "Presente", "Ausente", "Presente", "Ausente", 
"Presente", "Ausente", "Presente", "Ausente", "Presente", "Ausente", 
"Presente", "Ausente", "Presente", "Ausente", "Presente", "Ausente"
), Conteo = c(13, 797, 0, 810, 520, 290, 314, 496, 150, 659, 
1, 809, 1, 809, 9, 801, 49, 761, 114, 696)), row.names = c(NA, 
-20L), class = c("tbl_df", "tbl", "data.frame"))

提前致谢。

我们可以计算出我们想要显示的标签并在geom_label中使用它。

library(dplyr)
library(ggplot2)

c_clinicos %>%
  group_by(Condición) %>%
  mutate(label = sprintf('%d \n(%.2f %%)', Conteo, prop.table(Conteo) * 100), 
         label = replace(label, Conteo == 0, '')) %>%
  ggplot() +
  aes(x = Condición, fill = Estado, y = Conteo, label = label) +
  geom_col() +
  scale_fill_manual(values = list(
    Ausente = "#FF1100", Presente = "#538FF6")) +
  labs(x = "Condición clínica", y = "Nº Personas. ", 
       title = "Distribución de la presencia por enfermedad", 
       subtitle = "Muestra de 810 pacientes", fill = "Estado:")  +
  geom_label(position=position_stack(vjust=0.5), color = 'white') + 
  coord_flip() +
  theme_linedraw()