【问题标题】:Using an index from a list as a variable in a plot title使用列表中的索引作为绘图标题中的变量
【发布时间】:2012-04-30 15:49:08
【问题描述】:

我已经创建了一个绘图函数:

plotfun = function(dat, pos, tetrad.name=NULL, snp.cols=c("blue", "red", "lightgray")){
    plot(1,1, type="n", xlim=c(min(pos), max(pos)), ylim=c(0.75,4.25), yaxt="n", xaxt="n", main=paste("CCT6 -",tetrad.name), xlab="", ylab="", bty="n", cex=.75)
    abline(h=1:4, lty="dotted")
    tmpnull = sapply(1:4, function(n) points(pos, rep((4:1)[n],length(pos)), col=snp.cols[dat[n,]], pch=16))
    mtext(c("a", "b", "c", "d"), side=2, line=0.5, at=4:1, las=1, cex=.5)
}

我正在尝试使用此绘图函数来绘制我从更大列表中索引的矩阵子集(在此示例中为x)。我正在使用sapply 分别绘制所有矩阵:

sapply(1:69, function(n) plotfun(dat=matrix.transform(x[[n]]), pos=cct6.pos, tetrad.name= n ))

我的问题是我不知道如何将绘图标题读取为附加到每个矩阵的列表编号。相反,它将它们标记为1:69,从而丢失了索引输入中的信息。例如,如果第一个输入是cct6[[35]],我希望情节标题改为"CCT6-35" 而不是"CCT6-1"

抱歉,这是一个基本问题。我只是卡在这个...

【问题讨论】:

    标签: r list plot


    【解决方案1】:

    使用这个 sn-p 将你的 main= ... 参数更改为 'plotfun' 内的绘图调用中的一行:

    main=bquote("CCT6-*.(tetrad.name))
    

    当我用一个简单的测试用例尝试这个时,我发现惰性评估方面导致(不是错误,而是未能正确标记图。添加 force() 校准解决了这个问题。比较这两个:

    for(n in 1:2) plot(1,1,main=bquote("N="*.(n)))
    
    for(n in 1:2) {force(n); plot(1,1,main=bquote("N="*.(n)))}
    

    【讨论】:

    • 你能详细说明一下吗。我试图将它插入 plotfun 和 sapply 函数,但没有成功。当我尝试输入时,我得到了错误和不完整的代码行。
    • 这对我不起作用。当我完全按照上述方式输入时,我收到一条错误消息:Error: unexpected string constant in: "plotfun = function(dat, pos, tetrad.name=NULL, snp.cols=c("blue", "red", "lightgray")){ plot(1,1, type="n", xlim=c(min(pos), max(pos)), ylim=c(0.75,4.25), yaxt="n", xaxt="n", main=bquote("CCT6-*.(tetrad.name)), xlab="", ylab=""
    • @SamGlobus -- 试试这个:main = paste("CCT6", bquote(.(tetrad.name)), sep="-").
    猜你喜欢
    • 1970-01-01
    • 2022-10-14
    • 2018-03-25
    • 1970-01-01
    • 1970-01-01
    • 2017-04-26
    • 2022-01-20
    • 2016-01-19
    • 1970-01-01
    相关资源
    最近更新 更多