代码不适用于其他shp文件

use*_*552 2 r map ggplot2

这里提出的问题已经解决,但不知何故它不适用于不同的shp文件.知道为什么吗?我一直在尝试使用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") 
Run Code Online (Sandbox Code Playgroud)

输出错误:

在此输入图像描述

任何帮助,将不胜感激.

Joe*_*Joe 5

您的合并多次匹配每一行,在数据中创建重复的行.此外还有一个排序问题,当没有匹配的行时,您会丢失多边形.

更换

f_india <- merge(x=f_india, y=india@data, by.x="id", by.y="ID")
Run Code Online (Sandbox Code Playgroud)

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)), ]
Run Code Online (Sandbox Code Playgroud)

编辑:

这是我得到的输出.灰色多边形是由不匹配的名称引起的,但这是我能看到的唯一问题.

工作地图