当比例尺不同时,如何在lattice的不同面板中添加文本?

4

我希望在一个lattice多面板图中的不同面板上添加文本标签(例如a,b,c,d)。 我希望文本出现在每个绘图中相同的位置(即左上角),但是当比例尺不固定时,似乎无法实现此目标。

library(lattice)
X <- rnorm(100)
Y <- rnorm(100)
n <- c(rep("control", 5), rep("low", 5), rep("medium", 5), 
       rep("high", 5), rep("v.high", 5))
Z <- c(rep("a", 25), rep("b", 25), rep("c", 25), rep("d", 25))

df1 <- data.frame(X, Y, n, Z)

MyText <- c("(c)", "(d)", "(a)", "(b)")

xyplot(X ~ Y|Z, data=df1,
   groups=n,
   panel=function(x, y,...){
     panel.xyplot(x, y,...)
     panel.text(-1, 1.5, labels=MyText[panel.number()]) 
   },
   ylab = expression(paste(delta, ""^"15", "N")),
   xlab = expression(paste(delta, ""^"13", "C")),
   scales=list(relation="free"), 
   strip = F,
   auto.key=list(columns= 5, title="Treatments", cex.title=1))

如果有人对此有任何建议,您的帮助将不胜感激。
1个回答

6

一种方法是使用 grid.text,使用 npc 坐标引用所需位置,其中左下角为 (0, 0),右上角为 (1, 1)。

library(grid)
xyplot(X~Y|Z, data=df1,
       groups=n,
       panel=function(x, y,...) {
         panel.xyplot(x,y,...)
         grid.text(MyText[panel.number()], unit(0.05, 'npc'), unit(0.95, 'npc'))
       },
       ylab = expression(paste(delta, ""^"15","N")),
       xlab = expression(paste(delta, ""^"13","C")),
       scales=list(relation="free"), 
       strip = F,
       auto.key=list(columns= 5, title="Treatments", cex.title=1))

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接