添加点ggplot

时间:2014-05-27 10:45:51

标签: r ggplot2

嗨我有很多像这样的数据框

       id     oldid   yr mo dy    lon    lat
1  01206295 Aberfeldy 1885  3 22 -127.1 -31.78
2  05670001  05670005 1885  3 22  -4.38  49.15
3     06279     06279 1885  3 22 -123.5   37.5
4    106251     06323 1885  3 22  178.5   19.5
5 58FFF3618 58FFF3618 1885  3 22  -0.73  69.73
6 Achille.F Achille.F 1885  3 22 -35.62  -2.98

存储在不同的文件myfiles中,我试图用根据id值选择的颜色绘制每个文件的(lon,lat)点。到目前为止,我正在这样做

for (i in 1:length(myfiles)){
      colnames(myfilesContent[[i]]) <-c("id","oldid","yr","mo","dy","lon","lat")
      p <- ggplot() + geom_polygon(data=world_map,aes(x=long, y=lat,group=group)) 
      myfilesContent[[i]]$lon <- as.numeric(myfilesContent[[i]]$lon)
      myfilesContent[[i]]$lat <- as.numeric(myfilesContent[[i]]$lat) 
      p + geom_point(data=myfilesContent[[i]], aes(x=lon, y=lat, fill=as.factor(id)), size = 4, shape = 21, show_guide=FALSE)
      print(p)
}

无论如何,我不确定如果一个id在不同的文件中,它将被赋予相同的颜色

非常感谢

1 个答案:

答案 0 :(得分:1)

您可以确保所有id列的级别相同。首先,获取所有data.frame s

中所有ID的主列表
allids <- unique(unlist(lapply(myfilesContent, function(x) levels(x[,1])))

然后确保所有ID列共享这些级别

lapply(seq_along(myfilesContent), function(i) {
    myfilesContent[[i]][,1] < -factor(myfilesContent[[i]][,1], levels=allids)
})

如果它们具有相同的级别,它们应该具有相同的颜色。