satishr | 9 Feb 21:19
Picon

unable to customize a plot produced from a shapefile

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

> climagdiv = readOGR("US102ClimateDivisions", "US102ClimateDivisions") 
OGR data source with driver: ESRI Shapefile 
Source: "US102ClimateDivisions", layer: "US102ClimateDivisions" 
with 102 features and 5 fields 
Feature type: wkbPolygon with 2 dimensions 
> plot(climagdiv)
> plot(climagdiv,ylim=c(20,40))

>climagdiv = readShapePoly("US102ClimateDivisions.shp") 
> plot(climagdiv)
> plot(climagdiv,ylim=c(20,40))

Data:
http://r-sig-geo.2731867.n2.nabble.com/file/n7270579/US102ClimateDivisions.zip
US102ClimateDivisions.zip 

--
View this message in context: http://r-sig-geo.2731867.n2.nabble.com/unable-to-customize-a-plot-produced-from-a-shapefile-tp7270579p7270579.html
Sent from the R-sig-geo mailing list archive at Nabble.com.
(Continue reading)

Alexandre Villers | 9 Feb 21:39
Picon

Re: unable to customize a plot produced from a shapefile

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
>
>
>> climagdiv = readOGR("US102ClimateDivisions", "US102ClimateDivisions")
> OGR data source with driver: ESRI Shapefile
(Continue reading)

Satish Regonda | 10 Feb 17:09
Picon

Re: unable to customize a plot produced from a shapefile

Hi,
   'ylim', is a graphical prameter and  in the plot command should do the
job, but did not. However, I did go through a few other links but all point
to either plot to spplot, and tried a few things but unable to develop the
plot that I want. I understand that it is a small trick but am unable to
figure it out (do I need to provide ylim in a different format?) Greatly
appreciate any help.
Thanks,
Satish

>test=readShapePoly( "**US102ClimateDivisions.shp")
> testS=as(testshpol,"SpatialPolygons")
> plot(testS)
> plot(testS,ylim=c(30,50))

plot(testS) and plot(testS,ylim=c(30,50)) are producing almost similar
graph.

> test_sp=SpatialPolygonsDataFrame("**US102ClimateDivisions.shp")
Error in stopifnot(length(Sr <at> polygons) == nrow(data)) :
  trying to get slot "polygons" from an object of a basic class
("character") with no slots

On Thu, Feb 9, 2012 at 3:39 PM, Alexandre Villers <
villers.alexandre <at> gmail.com> wrote:

> 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
(Continue reading)

Manuel Schneider | 13 Feb 11:23
Picon

Re: unable to customize a plot produced from a shapefile

Try
plot(1, t="n", xlim=c(bbox(testS)[1,1], bbox(testS)[1,2]), ylim=c(30,50))
plot(testS, add=T)

Abw
Manuel
Roger Bivand | 13 Feb 12:36
Picon

Re: unable to customize a plot produced from a shapefile

On Mon, 13 Feb 2012, Manuel Schneider wrote:

> Try
> plot(1, t="n", xlim=c(bbox(testS)[1,1], bbox(testS)[1,2]), ylim=c(30,50))
> plot(testS, add=T)

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)
(Continue reading)


Gmane