我已经安装了一个包(CellCODE),其中定义了一个函数(称为“getAllSPVs”),允许我指定,作为参数之一 输出采用绘图格式:
getAllSPVs(data, plot=TRUE)
然而,该功能的定义方式是图例覆盖图形的一部分,图例和轴上的书写都太小而无法读取:
我试图手动重新定义该功能,以便我可以将图例移出绘图并使写作更清晰。我的修改结果如下:
但我只是设法将图例移出图表到一定程度,它仍然部分覆盖了树状图。我还改变了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
}
我尝试尽可能多地使用图像的边缘来扩展热图,这样一切都不会那么杂乱......
总的来说,我的问题是如何重新定义函数,以便扩展热图的绘图输出,并且一切都不会那么杂乱....
任何人都可以推荐特定的保证金比率,以便上面图片中标记的空白区域可以填充......或者我是否需要做其他事情才能让热图扩展?
也许我错过了一些基本的东西,而且根本没有与边缘有关...