The problem is that create_map_table(...)
takes whatever you give it as the id column (VARNAME_1
in your case), and puts that in a column called ID
in the output (statePolys
in your case). So now there is a statePolys$ID
column with whatever you had in VARNAME_1
. When you tell lmplot(...)
to join on edPov$Id1
and statePolys$VARNAME_1
, it can't find the latter column. Another way to say this is that the second element of map.link
must always be ID
. So this code works (I used the ID_1 column in both edPov
and ger
here, since that seems to contain a German State ID).
library(micromap)
library(ggplot2)
ger<-readShapePoly("germany3.shp")
edPov<-read.csv('gerpoverty.csv')
statePolys <- create_map_table(ger, 'ID_1') # ID_1 stored in statePolys$ID
head(statePolys)
lmplot(stat.data=edPov,
map.data=statePolys,
panel.types=c('labels', 'dot','map'),
panel.data=list('Id1','poverty',NA),
ord.by='poverty',
grouping=5, median.row=F,
map.link=c('ID_1','ID'))
Here, ID_1
refers to edPoly$ID_1
, and ID
refers to statePolys$ID
.