[R-sig-Geo] Plotting SpatialPolygonsDataFrame using ggplot2

hadley wickham h.wickham at gmail.com
Tue Apr 27 14:54:16 CEST 2010


Hi Paul,

You're missing the group specification:

ggplot(dum, aes(x = long, y = lat)) + geom_path(aes(group = group))

Hadley

On Tue, Apr 27, 2010 at 4:17 AM, Paul Hiemstra <p.hiemstra at geo.uu.nl> wrote:
> Hi people,
>
> I have a question regarding plotting a SpatialPolygonsDataFrame using
> ggplot2. To convert the SPDF to a dataframe with the coordinates I already
> use the excellent solution provided by Hadley in:
>
> http://tolstoy.newcastle.edu.au/R/e6/help/09/03/8668.html
>
> Some example code:
>
> library(maptools)
> library(ggplot2)
> x <- readShapePoly(system.file("shapes/sids.shp", package="maptools")[1],
>     IDvar="FIPSNO", proj4string=CRS("+proj=longlat +ellps=clrk66"))
> dum = fortify(x, region = "CNTY_ID")
> ggplot(dum, aes(x = long, y = lat)) + geom_path()
>
> My problem is that not only the counties are drawn, but also lines between
> the end point of one countie polygon and the beginning of the next. I solve
> this right now by adding the counties I want to plot one by one using:
>
> p + geom_path(subset(dum, id == 1) + geom_path(subset(dum, id == 2) + ...
> etc
>
> This is of course a solution, but not an elegant one. Creating a new ggplot
> object like:
>
> unique_ids = unique(dum$id)
> bla = ggplot(subset(dum, id == unique_ids[1]), aes(x =long, y = lat)) +
> geom_path()
> for(id in unique_ids[2:length(unique_ids)]) {
>      bla = bla + layer(data = subset(dum, id == id), mapping = aes(x =long,
> y = lat), geom = "path")
>   }
> print(bla)
>   Has exactly the same problem as using ggplot(dum, aes(x = long, y = lat))
> + geom_path(). I browsed the net and the maling list and could not find the
> answer, only references to the fortify() solution of Hadley.
>
> Anybody have an idea for an elegant solution to the problem?
>
> cheers,
> Paul
>
> --
> Drs. Paul Hiemstra
> Department of Physical Geography
> Faculty of Geosciences
> University of Utrecht
> Heidelberglaan 2
> P.O. Box 80.115
> 3508 TC Utrecht
> Phone:  +3130 274 3113 Mon-Tue
> Phone:  +3130 253 5773 Wed-Fri
> http://intamap.geo.uu.nl/~paul
> http://nl.linkedin.com/pub/paul-hiemstra/20/30b/770
>
> _______________________________________________
> R-sig-Geo mailing list
> R-sig-Geo at stat.math.ethz.ch
> https://stat.ethz.ch/mailman/listinfo/r-sig-geo
>



-- 
Assistant Professor / Dobelman Family Junior Chair
Department of Statistics / Rice University
http://had.co.nz/



More information about the R-sig-Geo mailing list