R图显示突变

时间:2014-08-14 05:45:52

标签: r plot

我是R.的新人。我想画这样的数字(左下角): http://www.nature.com/ng/journal/v45/n8/images_article/ng.2699-F3.jpg

显示突变的共存或排斥(每行一个基因,每列一个样本)。我认为它不是由它绘制的     热图或     pheatmap。 这里有一个样本数据(1表示突变,0表示野生型,NA表示不可用):

data=matrix(sample(c(rep(0,30),rep(1,30)),60),ncol=15)
is.na(data)=c(2,20)

有关如何完成的任何建议?感谢〜

1 个答案:

答案 0 :(得分:3)

这对我来说就像是光栅/平铺图形。有几种选择。我个人认为ggplot2包做得很好。

但是,我没有使用您提供的示例,因为我认为数据最好以长格式组织。有关如何执行此操作的简单示例,请参阅下面的代码:

require(ggplot2)

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

ggplot(dat, aes(x=subj, y=gene, fill=mut)) + 
  geom_raster() +
  scale_fill_manual(values = c("#8D1E0B","#323D8D"), na.value="#FFFFFF")

#dev.off()

可以使用ggplot2提供的手动缩放和主题功能优化视觉外观。您可以在包的文档中查找: http://docs.ggplot2.org/current/

编辑:

详细说明ggplot2提供的用于自定义外观的选项。情节的清晰变体,具有自定义的外观和比例,可能如下所示:

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")
  )

#dev.off()

尽管如此,查看ggplot2文档对于开发图形并根据需要进行调整非常有用。