2016-10-14 78 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

不错!正是我在找什么,谢谢。 –