nanounanue
nanounanue

Reputation: 8342

Error with function fortify of ggplot2

I am getting this error with the method fortify in ggplot2:

Error in (function (classes, fdef, mtable) : unable to find an inherited method for function ‘proj4string’ for signature ‘"NULL"’

The code is the following:

> library(maptools)
> gpclibPermit()
> library(ggplot2)
> library(rgdal)
> library(rgeos)
> library(ggmap)
> brMap <- readShapePoly("Google/BRASIL.shp")
> brMapDF <- fortify(brMap)
# This actually works

# But this don´t

> brMapDF <- fortify(brMap, region="UF")

Error in (function (classes, fdef, mtable)  : 
            unable to find an inherited method for function ‘proj4string’ for signature ‘"NULL"’

This happens with all the shapefiles that I have, so I tried (in the code above) with a shapefile that I found in stackoverflow Format the ggplot2 map, the data is https://docs.google.com/file/d/0B_coFit6AovfcEFkbHBjZEJaQ1E/edit

Upvotes: 3

Views: 1692

Answers (1)

user666993
user666993

Reputation:

It's a bit of a workaround, but if you duplicate the UF column as an id column as shown in the example wiki from my comments under data preparation, the defaults for fortify will use the first column in the spatial data frame to separate out the polygons accordingly while adding the names under the id column.

library(maptools)
library(ggplot2)
library(sp)
library(rgdal)
library(rgeos)

brMap <- readShapePoly("Google/BRASIL", IDvar = "UF",
    proj4string = CRS("+init=epsg:4236"), repair = TRUE, verbose = TRUE)
brMap@data$id <- brMap@data$UF
brMapDF <- fortify(brMap)

The resulting structure for brMapDF is then:

'data.frame':   9316 obs. of  7 variables:
 $ long : num  -68.6 -68.7 -68.8 -68.8 -68.9 ...
 $ lat  : num  -11.1 -11.2 -11.2 -11.1 -11.1 ...
 $ order: int  1 2 3 4 5 6 7 8 9 10 ...
 $ hole : logi  FALSE FALSE FALSE FALSE FALSE FALSE ...
 $ piece: Factor w/ 37 levels "1","2","3","4",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ group: Factor w/ 81 levels "AC.1","AL.1",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ id   : chr  "AC" "AC" "AC" "AC" ...

Upvotes: 1

Related Questions