R ggplot2在同一平铺中绘制组变量的所有级别

R ggplot2在同一平铺中绘制组变量的所有级别,r,ggplot2,tile,R,Ggplot2,Tile,我想为每个基因绘制每个“x”值,以及它所属的三个非排他“类型”(组变量)的每个级别。 是否可以将正方形或平铺拆分为组变量的三个级别,或将每个级别彼此相邻显示,而不是显示在下面的不同面上 如果它是另一个绘图,我可以使用“对”和抖动组变量为例 library(ggplot2) dat <- data.frame(gene = factor(c(rep('gene1',2), rep('gene2',2), rep('gene2',2), rep('gene3',2), rep('gene3'

我想为每个基因绘制每个“x”值,以及它所属的三个非排他“类型”(组变量)的每个级别。 是否可以将正方形或平铺拆分为组变量的三个级别,或将每个级别彼此相邻显示,而不是显示在下面的不同面上

如果它是另一个绘图,我可以使用“对”和抖动组变量为例

library(ggplot2)
dat <- data.frame(gene = factor(c(rep('gene1',2), rep('gene2',2), rep('gene2',2), 
rep('gene3',2), rep('gene3',2), rep('gene1',2))),
            x = factor(c(rep('a',3), rep('a',3), rep('b',3), rep('c',3))))
dat$type <- factor(rep(1:3))

library(ggplot2)
ggplot(dat, aes(gene, x, fill=type)) + geom_tile() + facet_grid(type ~ .)
库(ggplot2)

dat我的理解正确吗

    library(ggplot2)
ggplot(dat, aes(gene, type, fill=type)) + geom_tile() + facet_grid(x~.)
编辑:也许你需要做一个马赛克图。在这种情况下,“ggmosaic”包可能是解决方案。它将为您提供如下结果:


我的理解正确吗

    library(ggplot2)
ggplot(dat, aes(gene, type, fill=type)) + geom_tile() + facet_grid(x~.)
编辑:也许你需要做一个马赛克图。在这种情况下,“ggmosaic”包可能是解决方案。它将为您提供如下结果:


不知道你在找什么。也许
geom\u tile(position=“dodge”)
?谢谢你,马丁。我如何绘制每个基因的三个“类型”和相邻的x,而不是在不同的粪便上?不知道你在寻找什么。也许
geom\u tile(position=“dodge”)
?谢谢你,马丁。我如何为每个基因和x相邻绘制三个“类型”,而不是在不同的FECET上?谢谢Siim,我想知道是否有一种方法可以避免使用facet_网格,只使用分组,例如dodge/jitterMartin Gal似乎给了你答案:
ggplot(dat,aes(gene,x,fill=type))+geom_tile(位置=“道奇”)
这就是您要找的吗?差不多了!谢谢!唯一缺少的是瓷砖的尺寸应该相同(正方形分成3块,按类型上色).现在的结果是,如果只有一种类型,它只需要1/3,而我希望它占据该基因的整个瓷砖,即使类型有1个值。此外,x的基因不对齐(因为这个).可能会为缺失添加空格?我想我差不多做到了…可能会做一些事情,比如填充所有因子级别,但只按类型着色:库(tidyr);dat2=merge(dat,data.frame(complete(dat,gene,x,type,fill=list(type=NA)),by=c(“gene”,“x”),all.y=T);ggplot(dat2,aes(gene,x,fill=type.y,color=type.x))+geom_tile(position=“dodge”)+scale_fill_discrete(na.value=“white”),尽管这仍然不起作用……如何制作“类型”“因为丢失而绘制但未着色?我仍然不太确定我是否理解您需要什么,但我认为您可能正在考虑一个马赛克图?”?在这种情况下,ggmosaic软件包可能会帮助您。我不认为我可以在这里的评论中添加图片,所以我会用图片编辑我的原始答案,你可以看看这是否是你所想的。谢谢Siim,我想知道是否有一种方法可以避免使用facet_grid,而只使用分组,例如dodge/jitterMartin Gal似乎已经给了你这个答案:
ggplot(dat,aes(gene,x,fill=type))+geom_tile(position=“dodge”)
这就是你想要的吗?几乎!非常感谢。唯一缺少的部分是瓷砖的大小应该相同(正方形分成3块,按类型上色)。结果是,如果只有一种类型,它只需要1/3,而我希望它占据该基因的整个瓷砖,即使类型有1个值。此外,x的基因不对齐(正因为如此)。也许为失踪的人加上空白?我想我就快到了。。。可能会做一些事情,比如填充所有的因子级别,然后只按类型着色:library(tidyr);dat2=merge(dat,data.frame(complete(dat,gene,x,type,fill=list(type=NA))),by=c(“gene”,“x”),all.y=T;ggplot(dat2,aes(基因,x,填充=type.y,颜色=type.x))+geom_tile(position=“dodge”)+scale_fill_discrete(na.value=“white”),尽管这仍然不起作用。。。如何使“类型”打印出来,但不为丢失而着色?我仍然不太确定我是否了解您需要什么,但我想您可能正在考虑马赛克打印?在这种情况下,ggmosaic软件包可能会帮助您。我不认为我可以在这里的评论中添加图片,所以我会用图片编辑我的原始答案,你可以看看这是否是你所想的。