here中提出的问题已经解决,但不知何故,它不适用于不同的shp文件。知道为什么吗? 我一直在尝试使用Coloring the states according to a given variable using ggplot(第一个链接)
中的shp文件代码:
library(maptools)
library(ggplot2)
download.file("http://geocommons.com/overlays/204743.zip", destfile="204743.zip")
dir.create("ind")
unzip("204743.zip", exdir="ind")
india <- readShapeSpatial("ind/india_state.shp")
f_india <- fortify(india)
i <- sapply(india@data$NAME, function(x) agrep(x, data$Row.Labels, max.distance=.3, ignore.case=T)[1])
india@data$maj <- data$MAJORITY[i]
f_india <- merge(x=f_india, y=india@data, by.x="id", by.y="ID")
ggplot(f_india, aes(x=long, y=lat, group=group, fill=maj)) +
geom_polygon(colour="black")
输出错误:
任何帮助都将不胜感激。
答案 0 :(得分:5)
您的合并多次匹配每一行,在数据中创建重复的行。此外还存在排序问题,如果没有匹配的行,则会丢失多边形。
替换
f_india <- merge(x=f_india, y=india@data, by.x="id", by.y="ID")
带
f_india <- merge(x=f_india, y=unique(india@data), by.x="id", by.y="ID",all.x=T)
f_india <- f_india[with(f_india, order(id, order)), ]
修改强>
这是我得到的输出。灰色多边形是由不匹配的名称引起的,但这是我能看到的唯一问题。