如何扩展包装创建的美学热图

时间:2016-05-01 15:14:03

标签: r heatmap

我已经安装了一个包(CellCODE),其中定义了一个函数(称为“getAllSPVs”),允许我指定,作为参数之一 输出采用绘图格式:

getAllSPVs(data, plot=TRUE)

然而,该功能的定义方式是图例覆盖图形的一部分,图例和轴上的书写都太小而无法读取:

enter image description here

我试图手动重新定义该功能,以便我可以将图例移出绘图并使写作更清晰。我的修改结果如下:

enter image description here

但我只是设法将图例移出图表到一定程度,它仍然部分覆盖了树状图。我还改变了Y轴上的写入大小(下面指定的方式 - 仍在使用它,使其不会混乱)。箭头表示我希望图表穿孔的空间。但无论我对边缘做什么,热图都不会扩展。

下面是我修改的代码,用于进行我到目前为止所做的调整(请特别注意我评论为#####重要的部分):

 getAllSPVs<-function (data, plot = F) #output in form of plot when specified in command is set to TRUE
  {

  (.......)
  if (plot) {
    parlast = par(mar=c(1,1,1,1),no.readonly = T) ####IMPORTANT inserted the par argument here.
    datatmp = rbind(data[rownames(dataTag), ], t(SPVs))##### Don't Understand
    datatmp = resid(datatmp, grp)                          # any of this
    labGenes = c(apply(dataTag, 1, function(x) {           # but it might be
        which(x > 0)[1]                                    # important for
    }), rep(ncol(dataTag) + 1, ncol(SPVs)))################# expanding the heatmap

    mycol = c(rainbow(ncol(dataTag))[sample(ncol(dataTag))], 
              "black")
    corplot(datatmp, usecordist = T, ColSideColors = mycol[labGenes], 
            labRow = c(rep("", nrow(dataTag)), colnames(dataTag)), 
            density.info = "none", cexRow = 2, dendrogram = "column", #changed cexRow to value of '2'
            key = F)
    par(mar=c(0,0,0,0)) ##### IMPORTANT:changed from the original par(mfg = c(1, par()$mfcol[2]))
    legend("topright", fill = mycol, legend = colnames(dataTag), #specifying it to be top-right (or any other corners doesn't stop it from covering the graph data
           ncol = 1, xpd = NA, cex = 0.7, inset = 0) # here I changed the 'cex' argument to 0.7 from 1
    par(parlast)
}
colnames(SPVs) = colnames(dataTag)
SPVs
}

我尝试尽可能多地使用图像的边缘来扩展热图,这样一切都不会那么杂乱......

总的来说,我的问题是如何重新定义函数,以便扩展热图的绘图输出,并且一切都不会那么杂乱....

任何人都可以推荐特定的保证金比率,以便上面图片中标记的空白区域可以填充......或者我是否需要做其他事情才能让热图扩展?

也许我错过了一些基本的东西,而且根本没有与边缘有关...

0 个答案:

没有答案