2014-01-14 49 views
0

我即將創建包含垂直線和邊距文本的hexbinlattice)圖。 MWE的保證金文本應該位於該線的上方,它應該簡單說明該線的x值。這是我到目前爲止:R中的網格圖形邊緣座標

library(hexbin) 

test <- data.frame(VAR1 = rnorm(200), VAR2 = rnorm(200), 
       GROUP = c(rep(-1.5,60), rep(0.4,20), rep(1.9,120))) 

plot(hexbinplot(test$VAR1 ~ test$VAR2, 
      panel = function(...){ 
       panel.hexbinplot(...) 
       panel.abline(v = test$GROUP)}, 
      legend = list(top = 
          list(fun = textGrob, 
           args = list(
            x = unit(test$GROUP/5, "native"), 
            y = 0.5, 
            label = test$GROUP, 
            just = "center"))) 
)) 

正如你可以從這個例子看到的,我努力找出如何設置標籤的座標。有沒有辦法使用「真正的」x軸座標,或者我必須以某種方式處理相關的座標?

+1

我認爲一個更好的方法是在頂部使用自定義軸標記和標籤。請注意,目前您的標籤正在多次繪製,您可能需要'唯一(測試$ GROUP)' – baptiste

回答

1

遵循@baptiste的建議,我在頂部創建了一個自定義軸刻度和標籤,它完美地實現了,並使代碼更加美觀。這裏是:

axisG <- function(side, ...){ 
    if (side == "top"){ 
    at <- unique(test$GROUP) 
    panel.axis(side = side, outside = TRUE, at = at, labels = at, rot = 0) 
    } 
    else axis.default(side = side, ...) 
} 

plot(hexbinplot(test$VAR1 ~ test$VAR2, 
       axis = axisG, 
       panel = function(...){ 
        panel.hexbinplot(...) 
        panel.abline(v = test$GROUP)} 
))