# [R] Defining a viewport scale in {Grid}

ilai keren at math.montana.edu
Thu Feb 16 19:14:51 CET 2012

```Read the Details section in ?viewport carefully. You are treating
xscale/yscale as if they are xlim/ylim in base graphics. They are not.
It may take some trial and error on your part to figure out how
exactly this works, in general you are setting the size and location
of each polygon relative to the parent viewport (in this case the
plotting region), so you need to make the sizes smaller. Here are a
couple of examples:

pushViewport(viewport(width=unit(.5,'npc'),height=unit(.5,'npc'),just=c('left','bottom')))
# ... draw your 5 polygons

dev.off()
pushViewport(viewport(width=unit(.5,'npc'),height=unit(.5,'npc'),just='bottom',yscale=c(-1,1)))
# ... draw your 5 polygons

Hope this helps

On Thu, Feb 16, 2012 at 6:47 AM, geotheory <geotheory1 at gmail.com> wrote:
> Am just feeling my way into the grid library, and cannot figure out how to
> define the plot limits.  3/5 of the example polygons below plot in the
> default 0-1 range viewport.  But when I try to redefine the viewport the
> polygons plot in the same places.  I also get the same result without
> employing push/pop.  (As you can see from the scale I'm trying to introduce,
> I want to plot map polygons.)  Grateful for an idea where I'm going wrong.
>
> pushViewport(viewport(xscale=c(-180,180),yscale=c(-90,90)))
>
> grid.polygon(x=c(0,5,5,0)/100, y=c(0,0,5,5)/100, draw = T)
> grid.polygon(x=c(100,95,95,100)/100, y=c(100,100,95,95)/100, draw = T)
> grid.polygon(x=c(50,70,70,50)/100, y=c(50,50,70,70)/100, draw = T)
> grid.polygon(x=-c(10,10,40,40)/100, y=c(10,40,40,10)/100, draw = T)
> #NEGATIVE X
> grid.polygon(x=c(50,52,52,50)/100, y=-c(50,50,52,52)/100, draw = T)
> #NEGATIVE Y
>
> popViewport()
>
>
> --
> View this message in context: http://r.789695.n4.nabble.com/Defining-a-viewport-scale-in-Grid-tp4393974p4393974.html
> Sent from the R help mailing list archive at Nabble.com.
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help