Как сгруппировать бары в ggplot2 barplot - PullRequest
0 голосов
/ 25 февраля 2019

Я пытаюсь создать парную линейчатую диаграмму, в которой каждая пара сравнивает оценку preop и postop.3 из сравнений основаны на использовании процедуры A (SDR), а остальные 3 - на использовании процедуры B (ITB).Я ищу способ категоризации этих баров с помощью дополнительной переменной (процедуры).

Вот мой код:

newMAS <- read.csv(header=TRUE, "allMASpaired.csv")
#Prevent Time from getting alphabeticalized
newMAS$Paper <- factor(newMAS$Paper, 
levels=unique(as.character(newMAS$Paper)) )
newMAS$Time <- factor(newMAS$Time, levels=unique(as.character(newMAS$Time)) )

library(ggplot2)

pdf(file="allMASplotPAIRED.pdf")

ggplot(data=newMAS, aes(x=Paper, y=MAS, fill=Time)) +
  geom_bar(stat="identity", position=position_dodge(), color="black") +
  geom_text(aes(label=n), vjust=-1) +
  scale_fill_brewer(palette="Set1") + theme_classic()

enter image description here

1 Ответ

0 голосов
/ 26 февраля 2019

Спасибо за ссылку на ваши данные.Я добавил столбец с именем surg.type.Угадали, какие документы, где SDR, а какие, где ITB.Измените соответственно.

library(dplyr)
#some data munging
allMAS %>% # adding a surg.type
  mutate(surg.type = case_when(
         (Paper %in% c("Ailon","D'Aquino","Ingale")) ~ "SDR",
         TRUE ~ "ITB")) ->allMAS

Затем нанесли на карту, я сделал facet_wrap на surg.type, это сгруппировало бумаги одного типа вместе на одной панели, а также сделал scale = "free_x", чтобы метки x не повторялись.попробуйте без него, чтобы увидеть, что происходит

ggplot(allMAS, aes(y=mas,x=paper)) +
  geom_bar(aes(fill=time),stat="identity", position=position_dodge()) +
    scale_fill_brewer(palette="Set1") +facet_wrap(~surg.type, scales = "free_x")
...