首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我如何在ggmosaic中翻转一个马赛克图?

我如何在ggmosaic中翻转一个马赛克图?
EN

Stack Overflow用户
提问于 2018-10-26 11:50:10
回答 1查看 638关注 0票数 1

我如何在ggmosaic中翻转一个马赛克图?例如,我想要这样:

如下所示:

注意"present“在第一张图的顶部,在第二张图的底部。我想把“礼物”放在第一张图的底部。

数据是来自HSAUR3包的"schizophrenia2“数据集。代码如下:

代码语言:javascript
复制
#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时停止工作。我就是这么想的。但我想我只是遗漏了一些简单的代码,可以让我翻转它。

EN

回答 1

Stack Overflow用户

发布于 2019-03-06 22:52:24

问题在于变量级别在ggplot2对象中的映射顺序。您可以通过重新排序onsetdisorder变量来获得所需的结果。

代码语言:javascript
复制
#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"))

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53001137

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档