Hi,
I read ESRI shapefile and related files using readOGR, and was able to
plot successfully but am unable to customize the plot. The data is attached
and corresponds to US climate divisions.
The below mentioned second command supposed to produce a plot of sub
region of the USA but it's not. I tried using readShapePoly but no success.
In addition, I found a lot of space on top of the picture and want to reduce
it, but not sure how to do it. I request you to provide suggestions.
Thanks,
Satish
OGR data source with driver: ESRI Shapefile
Source: "US102ClimateDivisions", layer: "US102ClimateDivisions"
with 102 features and 5 fields
Feature type: wkbPolygon with 2 dimensions
Hi,
You should have a look at the documentation (e.g. manuals) available on
graphics in R (on the CRAN website, hhttp://cran.r-project.org/) to
learn how to set the parameters of a R graphic, and more specifically at
the spplot function (from package sp) for spatial objects (the ASDAR
book of Roger Bivand et al. is worth the look
http://www.springer.com/public+health/book/978-0-387-78170-9 ).
There are also several web sites showing this: just google "plot spatial
data r" and you should find what you are looking for.
HTH
Alex
Le 09/02/2012 22:19, satishr a ?crit :
Hi,
I read ESRI shapefile and related files using readOGR, and was able to
plot successfully but am unable to customize the plot. The data is attached
and corresponds to US climate divisions.
The below mentioned second command supposed to produce a plot of sub
region of the USA but it's not. I tried using readShapePoly but no success.
In addition, I found a lot of space on top of the picture and want to reduce
it, but not sure how to do it. I request you to provide suggestions.
Thanks,
Satish
OGR data source with driver: ESRI Shapefile
Source: "US102ClimateDivisions", layer: "US102ClimateDivisions"
with 102 features and 5 fields
Feature type: wkbPolygon with 2 dimensions
The issues here are quite complex. Firstly, you should have added a
coordinate reference system to the object (no direct impact on ylim, but a
contributing factor). Methods for plotting take an asp= argument for
aspect; in sp methods, the asp= is set to 1 for non-geographic
coordinates, and "stretched" for geographic coordinates depending on the
distance from the equator, see ?mapasp.
If the plot window is set with xlim or ylim, they will not respond
directly, but will create a rectangle of appropriate aspect, which means
that the plot region does not respect the x/ylim, but will expand to
values matching asp=. Next, read up on xaxs= and yaxs= in ?par; by
default, the axes are extended by 4% at each end, if x/yaxs="i", the
extension more or less respects the requested plot region. Then the
plotting devices clip to this region. So to get close to what you wanted,
you'd have to work out the geometry of the output rectangle, open a device
with the required shape, and go from there (using Manuel's contribution):
library(rgdal)
climagdiv = readOGR("US102ClimateDivisions", "US102ClimateDivisions")
proj4string(climagdiv) <- CRS("+proj=longlat +datum=WGS84")
x11(width=7, height=4)
plot(as(climagdiv, "Spatial"), xlim=bbox(climagdiv)[1,], ylim=c(20,40),
xaxs="i", yaxs="i", axes=TRUE)
plot(climagdiv, add=TRUE)
or similar.
It is also possible to use rgeos:
library(rgeos)
SP <- SpatialPoints(rbind(c(-125, 25), c(-67, 40)),
proj4string=CRS("+proj=longlat +datum=WGS84"))
clipbox <- gEnvelope(SP)
GI <- gIntersects(climagdiv, clipbox, byid=TRUE)
plot(climagdiv)
plot(climagdiv[GI[1,],], border="red", add=TRUE)
to choose Polygons objects at least partly within the chosen rectangle.
Not that this is not strictly appropriate for geographical coordinates,
and you may not want to clip either, as entities will appear strange in
the ouput graphics.
This isn't as simple as it appears, really.
Hope this clarifies,
Roger