How to draw partial grid in plot for spatial-binomial experiment?

classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

How to draw partial grid in plot for spatial-binomial experiment?

Ruben Roa
DeaR comRades:

I have a 2D spatial binomial process as shown in the data and code below.
I am plotting the number of trials and the number of successes in the spatial
binomial experiments and would like to draw the spatial cells were the trials
and successes were counted, i.e. a partial grid in the plot only for those
cells where there is a number. The cells are 2x2 km cells. The count of
Trials and Success should ideally appear in the middle of the square cell.
I know there is the 'grid' package but it seems the plots made using 'graphics'
are not compatible with the plots made using 'grid' (as warned in the grid help
pages). Thanks in advance.
Ruben

"fri"<-structure(list(
coords=structure(c(606,606,608,608,608,608,608,610,610,610,610,610,610,610,612,612,612,612,612,612,614,614,
614,614,614,614,614,614,614,616,616,616,616,616,616,616,618,618,618,618,618,620,620,620,622,624,
4388,4390,4384,4386,4388,4390,4392,4380,4382,4384,4386,4388,4390,4392,4380,4382,4384,4386,4388,4390,4374,
4376,4378,4380,4382,4384,4386,4388,4390,4372,4374,4376,4378,4380,4382,4384,4364,4366,4374,4376,4378,4368,
4374,4376,4366,4366),.Dim=c(46,2)),
data=c(3,2,0,0,11,4,0,1,1,3,5,9,3,0,0,16,7,0,0,0,0,0,0,0,4,1,0,0,0,0,4,9,12,0,0,0,0,0,4,5,2,1,0,0,0,0),
units.m=c(4,6,1,1,12,7,1,2,3,4,5,11,5,2,2,17,8,1,1,1,1,1,1,3,6,4,2,2,1,2,8,11,15,1,1,1,2,1,8,6,5,1,2,2,1,1),),
class="geodata")
par(mfrow=c(1,2))
plot(fri$coords[,1],fri$coords[,2],type="n",xlab="Easting (km)",ylab="Northing (km)",main="Success")
text(fri$coords[,1],fri$coords[,2],format(fri$data),cex=.6)
plot(fri$coords[,1],fri$coords[,2],type="n",xlab="Easting (km)",ylab="Northing (km)",main="Trials")
text(fri$coords[,1],fri$coords[,2],format(fri$units.m),cex=.6)

______________________________________________
[hidden email] mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
Reply | Threaded
Open this post in threaded view
|

Re: How to draw partial grid in plot for spatial-binomial experiment?

Marc Schwartz (via MN)
On Mon, 2005-12-19 at 11:17 -0200, Ruben Roa wrote:

> DeaR comRades:
>
> I have a 2D spatial binomial process as shown in the data and code below.
> I am plotting the number of trials and the number of successes in the spatial
> binomial experiments and would like to draw the spatial cells were the trials
> and successes were counted, i.e. a partial grid in the plot only for those
> cells where there is a number. The cells are 2x2 km cells. The count of
> Trials and Success should ideally appear in the middle of the square cell.
> I know there is the 'grid' package but it seems the plots made using 'graphics'
> are not compatible with the plots made using 'grid' (as warned in the grid help
> pages). Thanks in advance.
> Ruben
>
> "fri"<-structure(list(
> coords=structure(c(606,606,608,608,608,608,608,610,610,610,610,610,610,610,612,612,612,612,612,612,614,614,
> 614,614,614,614,614,614,614,616,616,616,616,616,616,616,618,618,618,618,618,620,620,620,622,624,
> 4388,4390,4384,4386,4388,4390,4392,4380,4382,4384,4386,4388,4390,4392,4380,4382,4384,4386,4388,4390,4374,
> 4376,4378,4380,4382,4384,4386,4388,4390,4372,4374,4376,4378,4380,4382,4384,4364,4366,4374,4376,4378,4368,
> 4374,4376,4366,4366),.Dim=c(46,2)),
> data=c(3,2,0,0,11,4,0,1,1,3,5,9,3,0,0,16,7,0,0,0,0,0,0,0,4,1,0,0,0,0,4,9,12,0,0,0,0,0,4,5,2,1,0,0,0,0),
> units.m=c(4,6,1,1,12,7,1,2,3,4,5,11,5,2,2,17,8,1,1,1,1,1,1,3,6,4,2,2,1,2,8,11,15,1,1,1,2,1,8,6,5,1,2,2,1,1),),
> class="geodata")
> par(mfrow=c(1,2))
> plot(fri$coords[,1],fri$coords[,2],type="n",xlab="Easting (km)",ylab="Northing (km)",main="Success")
> text(fri$coords[,1],fri$coords[,2],format(fri$data),cex=.6)
> plot(fri$coords[,1],fri$coords[,2],type="n",xlab="Easting (km)",ylab="Northing (km)",main="Trials")
> text(fri$coords[,1],fri$coords[,2],format(fri$units.m),cex=.6)


Is this what you want?:


par(mfrow=c(1,2))

plot(fri$coords[,1],fri$coords[,2],type="n",
     xlab="Easting (km)",ylab="Northing (km)",
     main="Success")

text(fri$coords[,1],fri$coords[,2],format(fri$data),cex=.6)

# Use rect() to draw the grids around the values
# The sides of each rectangle will be +/- 1 from the
# center point
rect(fri$coords[,1] - 1, fri$coords[,2] - 1,
     fri$coords[,1] + 1 , fri$coords[,2] + 1)


plot(fri$coords[,1],fri$coords[,2],type="n",
     xlab="Easting (km)",ylab="Northing (km)",
     main="Trials")

text(fri$coords[,1],fri$coords[,2],format(fri$units.m),cex=.6)

# Same here
rect(fri$coords[,1] - 1, fri$coords[,2] - 1,
     fri$coords[,1] + 1 , fri$coords[,2] + 1)


If so, see ?rect.

The 'grid' packages is the basis of the lattice graphics functionality.
It has nothing do to (directly) with drawing grid patterns on plots.

HTH,

Marc Schwartz

______________________________________________
[hidden email] mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
Reply | Threaded
Open this post in threaded view
|

Re: How to draw partial grid in plot for spatial-binomial experiment?

Roger Bivand
On Mon, 19 Dec 2005, Marc Schwartz (via MN) wrote:

> On Mon, 2005-12-19 at 11:17 -0200, Ruben Roa wrote:
> > DeaR comRades:
> >
> > I have a 2D spatial binomial process as shown in the data and code below.
> > I am plotting the number of trials and the number of successes in the spatial
> > binomial experiments and would like to draw the spatial cells were the trials
> > and successes were counted, i.e. a partial grid in the plot only for those
> > cells where there is a number. The cells are 2x2 km cells. The count of
> > Trials and Success should ideally appear in the middle of the square cell.
> > I know there is the 'grid' package but it seems the plots made using 'graphics'
> > are not compatible with the plots made using 'grid' (as warned in the grid help
> > pages). Thanks in advance.
> > Ruben
> >
> > "fri"<-structure(list(
> > coords=structure(c(606,606,608,608,608,608,608,610,610,610,610,610,610,610,612,612,612,612,612,612,614,614,
> > 614,614,614,614,614,614,614,616,616,616,616,616,616,616,618,618,618,618,618,620,620,620,622,624,
> > 4388,4390,4384,4386,4388,4390,4392,4380,4382,4384,4386,4388,4390,4392,4380,4382,4384,4386,4388,4390,4374,
> > 4376,4378,4380,4382,4384,4386,4388,4390,4372,4374,4376,4378,4380,4382,4384,4364,4366,4374,4376,4378,4368,
> > 4374,4376,4366,4366),.Dim=c(46,2)),
> > data=c(3,2,0,0,11,4,0,1,1,3,5,9,3,0,0,16,7,0,0,0,0,0,0,0,4,1,0,0,0,0,4,9,12,0,0,0,0,0,4,5,2,1,0,0,0,0),
> > units.m=c(4,6,1,1,12,7,1,2,3,4,5,11,5,2,2,17,8,1,1,1,1,1,1,3,6,4,2,2,1,2,8,11,15,1,1,1,2,1,8,6,5,1,2,2,1,1),),
> > class="geodata")
> > par(mfrow=c(1,2))
> > plot(fri$coords[,1],fri$coords[,2],type="n",xlab="Easting (km)",ylab="Northing (km)",main="Success")
> > text(fri$coords[,1],fri$coords[,2],format(fri$data),cex=.6)
> > plot(fri$coords[,1],fri$coords[,2],type="n",xlab="Easting (km)",ylab="Northing (km)",main="Trials")
> > text(fri$coords[,1],fri$coords[,2],format(fri$units.m),cex=.6)
>
>
> Is this what you want?:
>
>
> par(mfrow=c(1,2))
>
> plot(fri$coords[,1],fri$coords[,2],type="n",
>      xlab="Easting (km)",ylab="Northing (km)",
>      main="Success")
>
> text(fri$coords[,1],fri$coords[,2],format(fri$data),cex=.6)
>
> # Use rect() to draw the grids around the values
> # The sides of each rectangle will be +/- 1 from the
> # center point
> rect(fri$coords[,1] - 1, fri$coords[,2] - 1,
>      fri$coords[,1] + 1 , fri$coords[,2] + 1)
>
>
> plot(fri$coords[,1],fri$coords[,2],type="n",
>      xlab="Easting (km)",ylab="Northing (km)",
>      main="Trials")
>
> text(fri$coords[,1],fri$coords[,2],format(fri$units.m),cex=.6)
>
> # Same here
> rect(fri$coords[,1] - 1, fri$coords[,2] - 1,
>      fri$coords[,1] + 1 , fri$coords[,2] + 1)
>
>
> If so, see ?rect.

An alternative is to use functions in the sp package:

library(sp)
fri2 <- SpatialPoints(fri$coords)
fri2_SP <- SpatialPixels(fri2)
fri2_SPl <- as.SpatialPolygons.SpatialPixels(fri2_SP)
fri2_SPl_df <- SpatialPolygonsDataFrame(fri2_SPl,
  data.frame(data=fri$data, units.m=fri$units.m,
  row.names=IDvaluesSpatialPixels(fri2_SP)))
opar <- par(mfrow=c(1,2))
plot(fri2_SPl_df, axes=TRUE)
text(coordinates(fri2_SPl_df), label=format(fri2_SPl_df$data), cex=0.6)
title(xlab="Easting (km)", ylab="Northing (km)", main="Success")
plot(fri2_SPl_df, axes=TRUE)
text(coordinates(fri2_SPl_df), label=format(fri2_SPl_df$units.m), cex=0.6)
title(xlab="Easting (km)", ylab="Northing (km)", main="Trials")
par(opar)

which captures most of the polygon drawing for you. It has to go from
points to pixels to polygons to induce the regular shapes.

Roger


>
> The 'grid' packages is the basis of the lattice graphics functionality.
> It has nothing do to (directly) with drawing grid patterns on plots.
>
> HTH,
>
> Marc Schwartz
>
> ______________________________________________
> [hidden email] mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
>

--
Roger Bivand
Economic Geography Section, Department of Economics, Norwegian School of
Economics and Business Administration, Helleveien 30, N-5045 Bergen,
Norway. voice: +47 55 95 93 55; fax +47 55 95 95 43
e-mail: [hidden email]

______________________________________________
[hidden email] mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
Roger Bivand
Department of Economics
NHH Norwegian School of Economics
Helleveien 30
N-5045 Bergen, Norway