如何在 ggmosaic 中翻转马赛克图?
Posted
技术标签:
【中文标题】如何在 ggmosaic 中翻转马赛克图?【英文标题】:How can I flip a mosaic plot in ggmosaic? 【发布时间】:2019-03-30 18:23:27 【问题描述】:例如,我想要这个:
看起来像这样:
注意“present”在第一个图中位于顶部,在第二个图中位于底部。我想在第一个情节的底部制作“礼物”。
数据是 HSAUR3 包中的“schizophrenia2”数据集。代码如下:
#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"))
注意:加载 ggmosaic 时,vcd 可能会停止工作。它在我的。但我想我只是在 ggmosaic 中遗漏了一些简单的代码,可以让我翻转它。
【问题讨论】:
任何样本数据? 在我的帖子中添加了代码 你能看看这个帖子吗:***.com/questions/42710056/reverse-stacked-bar-order/… 那些是使用频率的条形图。你会如何改变 y 轴来做起始、分类变量? 【参考方案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"))
【讨论】:
以上是关于如何在 ggmosaic 中翻转马赛克图?的主要内容,如果未能解决你的问题,请参考以下文章
如何制作 20 个数据帧的马赛克图并将它们放在 r 中的一页中?
R语言可视化两个以上的分类(类别)变量之间的关系使用vcd包中的Mosaic函数创建马赛克图( Mosaic plots)分别可视化两个三个四个分类变量的关系的马赛克图