我在格子图中正确编写条带名称时遇到困难。这是一个数据示例:
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))
)
我的问题是,有没有办法在物种名称和“outra信息”之间获得更小的空间。这个问题的开始是因为标题是物种名称,它们需要用斜体字表示,但我还需要在标题上添加一些额外的信息,这不应该是斜体。我在Google上看到了在atop
中使用expression
来获取2行文本的可能性,但是我在物种名称和下一行之间得到了太大的空间。我希望他们能够更紧密地联系在一起,但我不知道是否有可能,如果是的话,该怎么做。
有没有人知道如何跳过条带名称中的行,保留斜体的表达式但不会在名称之间留出太多空格?它在情节上并没有那么糟糕,但是当我使用tiff()
保存到尺寸更大的图像时,条带名称缺少某些部分,基本上由于线条之间的距离,我认为。
答案 0 :(得分:2)
正如Duncan Murdoch通过R-help mailing list解释的那样,如果不使用atop
(在您的特定情况下会导致不合需要的大行间距),这个问题就不容易解决。但是,您可以使用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)
}
另外,请务必查看current.vpTree()
,它会返回格子图的当前面板结构。重新定义面板布局,添加其他组等后,您很可能必须调整面板名称的创建以导航到for
循环内的(object&#34; vp&#34;)。