Как я могу показать изменяющуюся пропорцию двоичного результата при разных условиях в ggplot? - PullRequest
1 голос
/ 15 апреля 2020

Я пытаюсь сгенерировать график, показывающий, как процент отдельных результатов изменяется при нескольких различных условиях.

Я вставляю вывод dput для образца объекта data.frame, которому присвоен SampleData:

SampleData <- structure(list(Patient = c(7L, 29L, 10L, 6L, 14L, 11L, 28L, 21L, 
5L, 18L, 4L, 1L, 24L, 20L, 22L, 23L, 19L, 3L, 12L, 30L), Symptom_Dur = structure(c(2L, 
1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 2L, 2L, 
2L, 2L, 2L), .Label = c("<2.5 Months", ">2.5 Months"), class = "factor"), 
    Outcome = structure(c(2L, 1L, 2L, 2L, 1L, 1L, 2L, 2L, 1L, 
    2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), .Label = c("Better w/ Steroids", 
    "Needed Surgery"), class = "factor")), row.names = c(NA, 
-20L), class = "data.frame")

В частности, я пытаюсь составить график, который показывает процент пациентов, которые нуждались в операции, когда у них были симптомы менее 2,5 месяцев, по сравнению с процентом пациентов, которые нуждались в операции, когда у них были симптомы более 2,5 месяцев , (Я могу посмотреть на другой момент времени и в будущем).

Я попытался сделать гистограмму, используя x = Результат и гранение по длительности симптома, как показано ниже, но я не могу получить график, который исключает корзины для " Better w / Steroids ":

SampleData %>% 
  ggplot() +
  geom_bar(mapping = aes(x = Outcome, y = stat(prop), group = 1)) +
  facet_wrap(~ Symptom_Dur)

Я хочу получить что-то похожее на график ниже:

enter image description here

Обратите внимание, что На изображении выше показан только процент пациентов, которые Needed Surgery. Я стараюсь избегать графика, который содержит данные для и , Better w/ Steroids и Needed Surgery пациентов.

Спасибо!

Ответы [ 2 ]

0 голосов
/ 15 апреля 2020

Вот подход, который делает другую группу прозрачной.

ggplot(SampleData) +
  geom_bar(aes(x = Symptom_Dur, fill = Outcome), position = "fill") +
  scale_fill_manual(values = c("transparent", "black"),
                    guide = "none")

enter image description here

0 голосов
/ 15 апреля 2020

Чтобы получить желаемый график, используйте x = Symptom_Dur вместо x = Outcome и удалите часть facet_wrap. Затем просто отредактируйте лабораторные работы и добавьте заголовок.

SampleData %>% 
  ggplot() +
  geom_bar(mapping = aes(x = Symptom_Dur , y = stat(prop), group = 1)) +
  ggtitle( "Percentage of patients needing surgery based on symptom duration")

enter image description here

...