Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R ggplot2 geom_光栅()中的双色矩形_R_Ggplot2_Geom Raster - Fatal编程技术网

R ggplot2 geom_光栅()中的双色矩形

R ggplot2 geom_光栅()中的双色矩形,r,ggplot2,geom-raster,R,Ggplot2,Geom Raster,我的问题与此类似。在本例中,1表示突变,0表示野生型,NA表示不可用。我的数据框设置相同,但每个基因可能包含两种或更多类型的突变。我想生成一个类似的数字,除了在一个基因有两种类型的突变的情况下,我希望正方形被切成两半,两种类型的突变都被着色,类似于示例。目前,如果受试者的基因有两个突变,第二个突变会覆盖第一个突变。提前感谢您抽出时间来帮忙 dat <- expand.grid(gene=1:10, subj=1:50) dat$mut <- as.factor(sample(c(re

我的问题与此类似。在本例中,1表示突变,0表示野生型,NA表示不可用。我的数据框设置相同,但每个基因可能包含两种或更多类型的突变。我想生成一个类似的数字,除了在一个基因有两种类型的突变的情况下,我希望正方形被切成两半,两种类型的突变都被着色,类似于示例。目前,如果受试者的基因有两个突变,第二个突变会覆盖第一个突变。提前感谢您抽出时间来帮忙

dat <- expand.grid(gene=1:10, subj=1:50)
dat$mut <- as.factor(sample(c(rep(0,300),rep(1,200)),500))
dat$mut[sample(500,300)] <- NA
dat[501,] = c(10,50,1) #included from comment below
ggplot(dat, aes(x=subj, y=gene, fill=mut)) +
  geom_raster() +
  scale_fill_manual(values = c("#8D1E0B","#323D8D"), na.value="#FFFFFF") +
  scale_x_discrete("Subject") +
  scale_y_continuous(breaks=1:10,
    labels=c("D0","D1","D2","D3","D4","D5","D6","D7","D8","D9")) +
  guides(fill=FALSE) +
  theme(
    axis.ticks.x=element_blank(), axis.ticks.y=element_blank(),
    axis.text.x=element_blank(), axis.text.y=element_text(colour="#000000"), 
    axis.title.x=element_text(face="bold"), axis.title.y=element_blank(),
    panel.grid.major.x=element_blank(), panel.grid.major.y=element_blank(),
    panel.grid.minor.x=element_blank(), panel.grid.minor.y=element_blank(), 
    panel.background=element_rect(fill="#ffffff")
  )

dat我看不出你的数据中有任何关于受试者和基因的多个条目?没有任何内容被覆盖,因为没有任何内容可覆盖

我添加了最后一行的重复,但将mut更改为1以显示。我还将光栅更改为平铺,并更改了不透明度,以便具有多个值的平铺具有不同的颜色

如果您想要像链接到的绘图一样的内容,您还需要创建shift和height vector,就像post显示的那样,这样每个平铺都会再次细分

    dat[501,] = c(10,50,1)

    ggplot(dat, aes(x=subj, y=gene)) +
      geom_tile(alpha=.5,aes(fill=mut), show.legend = F) +
      scale_fill_manual(values = c("#8D1E0B","#323D8D"), na.value="transparent") +
      scale_x_discrete("Subject") +
      scale_y_continuous(breaks=1:10,
                         labels=c("D0","D1","D2","D3","D4","D5","D6","D7","D8","D9")) +
      theme(
        axis.ticks.x=element_blank(), axis.ticks.y=element_blank(),
        axis.text.x=element_blank(), axis.text.y=element_text(colour="#000000"), 
        axis.title.x=element_text(face="bold"), axis.title.y=element_blank(),
        panel.grid.major.x=element_blank(), panel.grid.major.y=element_blank(),
        panel.grid.minor.x=element_blank(), panel.grid.minor.y=element_blank(), 
        panel.background=element_rect(fill="#ffffff")
      )

感谢您的建议!顺便说一句,我对你的评论投了更高的票,但因为我的声誉不高,所以不会显示。bgene:如果你觉得答案完全解决了你的问题,那么你应该点击投票箭头下方的复选标记来接受它。即使名声不好,你也可以这样做。(这样做你会赢得一些声誉。)