как добавить общую сетку в решетку xy.plot - PullRequest
5 голосов
/ 14 марта 2012

Этот вопрос объясняет, как добавить сетки в определенные точки за решетку (то есть эквивалент два abline () для нормального графика). Моя проблема в том, что когда я пытаюсь добавить обычную сетку (эквивалент вызова сетки () для нормального сюжета) ... содержание сюжетов ... исчезнет. Вот пример:

B<-cbind(rnorm(100),rnorm(100), floor(runif(100,1,7)), floor(runif(100,1,3)), 
           floor(runif(100,1,4)))
colnames(B)<-c("yval","xval","gval","p","cr")
B<-as.data.frame(B)
xyplot(B$yval~B$xval|B$p*B$cr,group=B$gval,main="Scatterplots by Cylinders and Gears", 
           ylab="Miles per Gallon", xlab="Car Weight",type="l",lwd=5,
           panel=function(x,y){panel.grid()})

если вы удалите последнюю опцию (т.е. panel = function (x, y) {panel.grid ()}), тогда я вижу строки данных, но не grid (). Есть ли способ иметь и сетку и линии данных

спасибо заранее,

1 Ответ

5 голосов
/ 14 марта 2012

Попробуйте это:

xyplot(yval ~ xval | p*cr, data=B, group=gval, type=c("l","g"), lwd=5, 
       main="Scatterplots by Cylinders and Gears",
       ylab="Miles per Gallon", xlab="Car Weight")

Я немного упростил ваш синтаксис, потому что вы можете использовать имена переменных из вашего data.frame, если вы используете аргумент data=. Ключ должен использовать type=c("l","g"), что означает линии + сетка, и эквивалентно функции панели, которая будет выглядеть как

panel=function(...) {
  panel.xyplot(...)
  panel.grid()
}

В вашем случае это потому, что вы забыли добавить panel.xyplot(), чтобы не было проведено ни одной точки или линии. Если вам нужна другая сетка, вы можете использовать приведенный выше код и настроить вызов на panel.grid().

...