2

我很难在格子图中正确写出带状名称。这是一个数据示例:

    resposta<-rnorm(90)
    preditor1<-rep(rep(c("a","b"),each=15),3)
    preditor2<-rep(c("sp1","sp2","sp3"),each=30)

我正在做以下情节:

    library(lattice)
    bwplot(resposta~preditor1|preditor2,layout=c(3,1),
           strip=strip.custom(
               factor.levels=c(
                   expression(atop(italic("P. paradoxa"),"outra info")),
                   expression(atop(italic("H. raniceps"),"outra info")),
                   expression(atop(italic("P. azurea"),"outra info")))
           ),
           par.settings=list(layout.heights=list(strip=2.5))
           )

我的问题是,有没有办法在物种名称和“外部信息”之间获得更小的空间。这个问题开始是因为,由于标题是物种名称,它们需要用斜体,但我还需要在标题上添加一些额外的信息,这不应该是斜体。我在 Google 上看到了使用atopinside anexpression来获取 2 行文本的可能性,但是物种名称和下一行之间的空格太大。我希望他们更接近,但我不知道这是否可能,如果可以,该怎么做。

有谁知道如何跳过条带名称中的行,保持斜体的表达但在名称之间不留太多空间?情节上还不错,但是当我tiff()用来保存到更大尺寸的图像时,条带名称缺少一些部分,我认为主要是由于线条之间的距离。

4

1 回答 1

2

正如 Duncan Murdoch 通过R-help mailing listatop解释的那样,如果不使用(在您的特定情况下,会导致不希望的大行间距),则无法轻松解决此问题。downViewport但是,您可以通过使用导航到相应的条形面板并随后使用分别插入两行文本来手动实现目标grid.text

## create plot with invisible strip labels
bwplot(resposta ~ preditor1 | preditor2, layout = c(3, 1),
       par.settings = list(layout.heights = list(strip = 2.5)), 
       par.strip.text = list(col = "transparent")
)

## add species labels
lbl <- c("P. paradoxa", "H. raniceps", "P. azurea")

for (i in 1:3) {
  # navigate to i-th strip
  vp <- paste0("plot_01.strip.", i, ".1.vp")
  downViewport(vp)

  # add first and second line of text
  grid.text(bquote(italic(.(lbl[i]))), vjust = ifelse(i %in% 1:2, 0, -.25))
  grid.text("outra info", vjust = 1.1)

  # navigate to top level
  upViewport(0)
}

paneled_plot

此外,请确保查看current.vpTree()哪个返回格状图的当前面板结构。重新定义面板布局、添加另一个组等之后,您很可能必须调整面板名称的创建以导航到for循环内的(对象“vp”)。

于 2016-04-19T14:10:37.633 回答