Как мне перевернуть мозаичный сюжет в ggmosaic?
Как мне перевернуть мозаичный сюжет в ggmosaic? Например, я хочу это:
выглядеть так:
Обратите внимание, что "присутствует" вверху на первом графике и внизу на втором графике. Я хотел бы сделать "подарок" на дне в первом сюжете.
Данные представляют собой набор данных "шизофрения2" из пакета HSAUR3. Вот код:
#import the data set
data("schizophrenia2", package="HSAUR3")
#plot in base R
library(vcd)
colors <- c("grey", "darkred")
mosaic(disorder ~ month | onset, highlighting_fill = colors, data = schizophrenia2, main = "Presence of Thought Disorder by Onset of Disease")
#plot in ggplot2
library(ggmosaic)
ggplot(data = schizophrenia2) +
geom_mosaic(aes(x = product(month, onset), fill=disorder), na.rm=T) +
labs(title="Presence of Thought Disorder by Onset of Disease", x="Onset", y="Month") +
coord_flip() +
scale_fill_discrete(guide = guide_legend(reverse=TRUE),
name="Disorder", labels=c("Absent", "Present", "Dropped Out"))
Примечание: vcd может перестать работать при загрузке ggmosaic. Это было в моем. Но я думаю, что мне просто не хватает некоторого простого кода в ggmosaic, который позволил бы мне перевернуть его.
1 ответ
Проблема заключается в том, что уровни переменной отображаются в объекте ggplot2. Вы можете достичь желаемого результата, изменив порядок onset
а также disorder
переменные.
#import the data set
data("schizophrenia2", package="HSAUR3")
#plot in ggplot2
library(ggmosaic)
library(dplyr)
schizophrenia2 %>%
mutate(onset = forcats::fct_relevel(onset, "> 20 yrs"),
disorder = forcats::fct_relevel(disorder, "present")) %>%
ggplot() +
geom_mosaic(aes(x = product(month, onset), fill=disorder), na.rm=T) +
labs(title="Presence of Thought Disorder by Onset of Disease") +
scale_x_productlist(name="Onset") +
scale_y_productlist(name="Month") +
coord_flip() +
scale_fill_discrete(guide = guide_legend(reverse=TRUE),
name="Disorder", labels=c("Present", "Absent", "Dropped Out"))
Если кому-то интересно, я отправил данные в обратном порядке, используя пакет tidyverse.