Как я могу перевернуть мозаичный сюжет в ggmosaic?

Как я могу перевернуть мозаичный сюжет в ggmosaic? Например, я хочу это:

enter image description here

чтобы выглядеть так:

enter image description here

Обратите внимание, что «присутствует» находится вверху на первом графике и внизу на втором графике. Я хотел бы сделать «подарочек» внизу на первом сюжете.

Данные представляют собой набор данных "schizophrenia2" из пакета 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, который позволил бы мне его перевернуть.

какие-нибудь образцы данных?

sai saran 26.10.2018 06:03

добавил код к моему сообщению

wisamb 26.10.2018 06:35

Можете ли вы проверить эту тему: stackoverflow.com/questions/42710056/reverse-stacked-bar-ord‌ er /…

sai saran 26.10.2018 07:18

это столбиковые диаграммы, использующие частоту. как бы вы изменили ось Y, чтобы задать начальную, категориальную переменную?

wisamb 26.10.2018 07:53
1
4
600
1

Ответы 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"))

enter image description here

Другие вопросы по теме