将使用paste()生成的字符传递给mtext()

时间:2015-02-25 12:09:08

标签: r expression heatmap gplots

我想尝试通过调用heatmap.2来尝试生成热图的函数。除此之外,我想通过调用add.expr来生成图表的标题,例如:

add.expr=c(mtext(text=titlestring, side=3, line=4, cex=1)

titletring是另一个函数传递给函数的charqacter向量:

titlestring<-paste("Mean bin methylation",samplename, "on 5kb flanked CpG Island promoters in mm9")

当我尝试运行我的功能时,我收到以下错误:

  

as.graphicsAnnot(text)中的错误:object&#39; titlestring&#39;未找到   我知道titlestring是在我的函数范围内定义的,因为我使用print()进行了测试   我认为问题与mtext()期望exprssion对象的事实有关,因此我使用as.expression()强制将titletring强制转换为表达式。但我仍然得到这个错误。

知道可能是什么问题吗?

提前致谢

Dolev Rahat

2 个答案:

答案 0 :(得分:0)

如果您的主要问题是使用函数添加辅助标题,您可以使用main = c(titlestring,substring),您可以根据需要更改矢量字符串。该示例取自mtcars集(可以使用?heatmap找到)。

require(graphics) 
require(grDevices)

x  <- as.matrix(mtcars)
rc <- rainbow(nrow(x), start = 0, end = .3)
cc <- rainbow(ncol(x), start = 0, end = .3)

titlestring<-c("Mtcars dataset")
substring<-c("First example")
par(cex.main=0.9)
heatmap(x, Colv = NA, col = cm.colors(256), scale = "column",
    RowSideColors = rc, margins = c(5,10),
    xlab = "specification variables", ylab =  "Car Models",
    main = c(titlestring, substring))

enter image description here

答案 1 :(得分:0)

不值得所有这些大惊小怪,但理想情况下,我希望能够为主要和附属标题设置不同的字体大小,并且还能控制它们的位置。如果我使用litterals添加带有add.expr()的标题,我可以这样做,例如:

 heatmap.2 (as.matrix(matToPlot[,(1:totCols)]),
         Rowv=FALSE, Colv=FALSE, dendrogram="none", 
         breaks=seq(0,1,by=1/length(methColors)),
         col=methColors, trace="none",colsep=colsep,sepcolor=c("sky blue"),
         #main=paste(titlestring,subtitlestring,chromstring,sep="\n"),
         add.expr=c(mtext(text="Read coverage of Dox Plus on 5kb flanked CpG
          Island promoters in mm9", side=3, line=4, cex=1),
         mtext(text="Island set represents island for which ChIP data is avilable
          and is order by mean(H3K4me3)-mean(H3K27me3) within islands", side=3, line=2, cex=0.8),
         mtext(text="H3K27me3", side=1, adj=0.125, line=3),
         mtext(text="H3K4me3", side=1, adj=0.375, line=3),
         mtext(text="H3K4me1", side=1, adj=0.625, line=3),
         mtext(text="Methylation", side=1,adj=0.9, line=3))) 

然而,使用main我得到的结果我可以忍受,但不是那么好(比较这两个图):

plot generated using add.expr

plot generated using main