Нужно настроить порядок подгрупп на графике geom_bar - PullRequest
1 голос
/ 04 февраля 2020

Нужна помощь в попытке упорядочить отдельные столбцы на этом графике так, чтобы они были в одинаковом порядке в категориях «до инокуляции» и «после инокуляции». Я попытался вручную установить уровни для вектора blood.state как в коде ggplot, так и в строке, создающей сам фрейм данных. Не уверен, почему у меня такие проблемы с этим. Спасибо большое!

df.graph1 <- data.frame(
  exp.period = factor(c("Pre-innoculation", "Pre-innoculation", "Pre-innoculation", "Post-innoculation", "Post-innoculation", "Post-innoculation"), levels=c("Pre-innoculation", "Post-innoculation")),
  disease.state = factor(c("Apparent", "Possible", "NA", "Apparent", "Possible", "NA"), levels = c("NA", "Possible", "Apparent")),
  count = factor(c(3, 12, 15, 11, 18, 9),))

ggplot(df.graph1, aes(x=factor(exp.period, level=c('Pre-innoculation', 'Post-innoculation')), y=count, fill=disease.state)) + 
  geom_bar(stat="identity", position=position_dodge(), colour="black") + 
  theme_classic() + 
  xlab("Experimental Period") + 
  ylab("") +
  guides(fill=guide_legend(title="Disease State"))

1 Ответ

0 голосов
/ 04 февраля 2020

df.graph1$disease.state=factor(df.graph1$disease.state,levels = c("NA","Possible","Apparent"),ordered = T) #set order of bars

df.graph1$observations=as.numeric(as.character(df.graph1$count)) #convert count to numeric (try what happens, if you only convert to numeric, without converting to character first)

ggplot(df.graph1, aes(x=exp.period, y=observations,
                      fill=disease.state)) + 
  geom_col(position=position_dodge(), colour="black") + 
  theme_classic() + 
  xlab("Experimental Period") + 
  ylab("") +
  guides(fill=guide_legend(title="Disease State"))

...