使用coplot调整绘图边距

时间:2016-03-09 22:32:58

标签: r plot

使用coplot添加标题时,如何更改绘图区域的上边距?更改par值似乎没有效果。我想增加上边距以在那里设置标题,但改变par(mar)并不像我预期的那样工作。这是一个例子,

opar <- par(mar=c(5.1, 4.1, 20, 1))
coplot(Sepal.Length ~ Sepal.Width | Species, data=iris, columns=3,
  bar.bg=c(fac="light green"), panel=panel.smooth)   # mar=c(5.1, 4.1, 10, 1)
title("test", outer=TRUE)
par(opar)

enter image description here

2 个答案:

答案 0 :(得分:1)

您可以稍微向下移动它,使其不会“偏离边缘”:

opar <- par(mar=c(5.1, 4.1, 20, 1))
coplot(Sepal.Length ~ Sepal.Width | Species, data=iris, columns=3,
  bar.bg=c(fac="light green"), panel=panel.smooth)   # mar=c(5.1, 4.1, 10, 1)
title("test", line =-1, outer=TRUE)
par(opar)

影响上边距空间的努力因par()而失败,我怀疑这是硬编码边距的情节方法之一。事实上,这是coplot中的代码:

 mar <- if (have.b) 
        rep.int(0, 4)
    else c(0.5, 0, 0.5, 0)
    oma <- c(5, 6, 5, 4)
    if (have.b) {
        oma[2L] <- 5
        if (!b.is.fac) 
            oma[4L] <- 5
    }
    if (a.is.fac && show.given[1L]) 
        oma[3L] <- oma[3L] - 1

 opar <- par(mfrow = c(total.rows, total.columns), oma = oma, 
        mar = mar, xaxs = "r", yaxs = "r")

答案 1 :(得分:1)

正如@ 42所提到的,coplot的代码似乎包含mar的硬编码值: https://github.com/wch/r-source/blob/trunk/src/library/graphics/R/coplot.R#L214

另一种解决方案是将coplot代码复制/粘贴到您自己的脚本中并更改函数中mar的值,但如果@ 42的解决方案为您完成工作,那似乎有点过分。< / p>