2016-10-14 79 views
1

在網格包中,默認情況下,新視口範圍內的x和y位置在0和1之間(相對於視口的寬度/高度)。 爲了繪製值我得值轉化爲一個範圍介於0和1:R:網格包中的絕對座標

library(grid) 

vect1 <- rnorm(20) 
vect1_relative <- vect1-min(vect1) 
vect1_relative <- vect1_relative/max(vect1_relative) 

vect2 <- rnorm(20) 
vect2_relative <- vect2-min(vect2) 
vect2_relative <- vect2_relative/max(vect2_relative) 

pushViewport(viewport()) 
grid.lines(x = c(0,1),y = c(0,1)) 
grid.points(x = vect1_relative,y = vect2_relative) 

我敢肯定有一個更簡單的解決方案,我認爲它具有使用unit(),同時打開做視口,但我還沒有想出如何。 有人可以告訴我一個示例如何在網格視口中使用絕對值(並定義xlim/ylim)嗎?

回答

1

一個選項是使用dataViewportnative單位。

library(grid) 

d <- data.frame(x=100*rnorm(10),y=1e4*rnorm(10)) 
grid.newpage() 
pushViewport(viewport(width=0.8,height=0.8)) 
grid.rect(gp=gpar(fill="grey98")) 
vp <- dataViewport(xData = d$x, yData = d$y) 
grid.points(d$x, d$y, default.units = "native", vp=vp, 
      pch=19, size = unit(0.2,"char")) 

enter image description here

+0

不錯!正是我在找什麼,謝謝。 –