Обратный порядок после coord flip в R
пример данных из dbv:
gender Sektion
1 m 5
2 m 5
3 w 3B
4 w 3B
5 w 3B
6 m 4
у меня есть следующий сюжет:
Sekplot <- ggplot(dbv,aes(x=Sektion,
fill=factor(gender),
stat="bin",
label = paste(round((..count..)/sum(..count..)*100), "%")))
Sekplot <- Sekplot + geom_bar(position="fill")
Sekplot <- Sekplot + scale_y_continuous(labels = percent)
Sekplot <- Sekplot + labs(title = "test")
Sekplot <- Sekplot + scale_fill_discrete(name="test", breaks=c("m", "w", "k.A."), labels=c("m", "w", "k.A."))
Sekplot <- Sekplot + geom_hline(aes(yintercept = ges, linetype = "test"), colour = "black", size = 0.75, show_guide = T)
Sekplot <- last_plot() + coord_flip()
Sekplot <- Sekplot + guides(colour = guide_legend(override.aes = list(linetype = 0 )),
fill = guide_legend(override.aes = list(linetype = 0 )),
shape = guide_legend(override.aes = list(linetype = 0 )),
linetype = guide_legend()) + theme(legend.title=element_blank())
Sekplot
вывод: график с осью y в неправильном порядке
как я могу изменить порядок "секция" оси? Я хотел бы иметь один сверху и 8 внизу.
Я пытался, согласно groupA$Date <- factor(groupA$Date, levels=rev(unique(groupA$Date)))
:
Sekplot <- last_plot() + coord_flip() + scale_x_reverse()
в ряде вкус, но не мог найти правильный путь.
1 ответов
вы можете добавить scale_x_discrete
с для этого. Вы можете просто записать ограничения в нужном порядке, но это усложняется, когда у вас много уровней факторов. Вместо этого вы можете вытащить уровни фактора из своего набора данных и воспользоваться rev
поставить их в обратном порядке.
это будет выглядеть:
scale_x_discrete(limits = rev(levels(dbv$Sektion)))