Как маркировать панели в решетке - PullRequest
9 голосов
/ 14 декабря 2011

вот простая проблема, с которой вы наверняка уже сталкивались, но у меня сильно болит голова ...

У меня есть такой фрейм данных:

set.seed(3)
mydata <- data.frame(var = rnorm(100,20,1),
                     temp = sin(sort(rep(c(1:10),10))),
                     subj = as.factor(rep(c(1:10),5)))

и мне нужно сделать точечный график для каждого subj, не проблема, но ... что я хочу, чтобы заменить полосы из решетки и добавить метку для каждого графика. Мне удается сделать это с помощью следующего кода, но я все еще не доволен ...

xyplot(var ~ temp | subj, 
       data = mydata,
       strip=FALSE,
       panel = function(x, y,...) {
               panel.xyplot(x, y,...)
               panel.text(1,21,labels=which.packet())
               }) 

Последний бит ... где меня сложили ... это как печатать буквы вместо цифр на каждой панели. Я хотел бы назвать панели a, b, c ... и т. Д.

Любые предложения ... Большое спасибо matteo

1 Ответ

9 голосов
/ 14 декабря 2011

Ты почти понял.Если вам нужны буквы, то индексируйте letters с помощью panel.number():

xyplot(var ~ temp | subj, 
   data = mydata,
   strip=FALSE,
   panel = function(x, y,...) {
           panel.xyplot(x, y,...)
           panel.text(1,21,labels=letters[panel.number()])
           }) 

Вы также можете определить другой символьный вектор внутри функции панели и использовать с ним эту схему индексации.

...