Р: Как раскрасить диагональные панели на графике пар ()? - PullRequest
2 голосов
/ 02 марта 2012

Следующий код раскрашивает фон панели для графика pairs в R. Как можно раскрасить диагональную панель (где печатаются имена переменных)? Как видите, я пробовал, но имена переменных не выровнены (по какой-либо причине).

count <- 0 
mypanel <- function(x, y, ...){

   count <<- count+1 
   bg <- if(count %in% c(1,4,9,12)) "#FDFF65" else "transparent"    ll <- par("usr") 
   rect(ll[1], ll[3], ll[2], ll[4], col=bg)    points(x, y, cex=0.5) 
}

mydiag.panel <- function(x, ...){

   ll <- par("usr") 
   rect(ll[1], ll[3], ll[2], ll[4], col="#FDFF65") }

U <- matrix(runif(4*500), ncol=4) 
pairs(U, panel=mypanel, diag.panel=mydiag.panel)

Ответы [ 2 ]

2 голосов
/ 02 марта 2012

Явно установка label.pos = 0.5, кажется, работает для меня:

pairs(U,panel = mypanel, diag.panel=mydiag.panel,label.pos = 0.5)

По умолчанию отображается 0.5 + has.diag/3, где has.diag устанавливается на TRUE, когда вы указываете свою собственную пользовательскую функцию diag.panel, которая в итоге меняет значение по умолчанию на 0,5 + 1/3. Честно говоря, я не уверен, почему это будет.

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

0 голосов
/ 31 мая 2019

Мне удалось затенить диагональ без сложного кода:

panel.diag <- function(x,...){   
usr <- par("usr")
rect(usr[1],usr[3],usr[2],usr[4],col="pink")
}

pairs(U,upper.panel=panel.cor,lower.panel=panel.pts, diag.panel=panel.diag, label.pos=0.5)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...