如何在ggplot2中将地图与复杂的点显示结合起来?

Dav*_*vid 7 r shapefile ggplot2

我正试图用非洲背景地图绘制研究地点的积分.我可以独立创建这两个,但我很难将它们叠加在彼此之上.

我使用的非洲地图是来自maplibrary.org的Esri shapefile.可以从我的保管箱https://www.dropbox.com/s/etqdw3nky52czv4/Africa%20map.zip获取.我在文本文件中有点,也可以从我的投递箱中获得. https://www.dropbox.com/s/scvymytjsr5pvaf/SPM-437-22Nov12.txt.他们指的是疟疾寄生虫的分子耐药性研究.我想绘制它们,使颜色是具有抗药性遗传标记的寄生虫的比例,并且大小是测试的寄生虫的数量.

独立绘制点数:

qplot(Longitude, Latitude, data = d.spm.437, colour = Frc437, size = Tot437)
Run Code Online (Sandbox Code Playgroud)

绘制非洲地图:

library(maptools)
africa = readShapePoly("Africa.shp")
africa.map = fortify(africa, region="COUNTRY")
qplot(long, lat, data = africa.map, geom="path", group=group)
Run Code Online (Sandbox Code Playgroud)

任何有关将这两者放在一起同时保留点数显示的帮助将不胜感激.

Slo*_*ner 8

尝试这样的事情.似乎为我工作.我认为你的一些lat-long坐标是错误的.当前fill颜色geom_point设置为,Tot437因此您可能希望更改它.

地图

library(ggplot2)
library(rgdal)

africa <- readOGR("c:/test", layer = "Africa")
africa.map = fortify(africa, region="COUNTRY")

africa.points = read.table("c:/test/SPM-437-22Nov12.txt", header = TRUE, sep = ",")
names(africa.points)[which(names(africa.points) == 'Longitude')] <- 'long' # rename lat and long for consistency with shp file
names(africa.points)[which(names(africa.points) == 'Latitude')] <- 'lat'

ggplot(africa.map, aes(x = long, y = lat, group = group)) +
    geom_polygon(colour = "black", size = 1, fill = "white", aes(group = group)) +
    geom_point(data = africa.points, aes(x = long, y = lat, fill = Tot437, group = NULL), size = 4, shape = 21, colour = "black", size = 3)
Run Code Online (Sandbox Code Playgroud)

顺便说一句,看看你的地图,你可能很难得到个别区域的详细视图,因此解决这个问题的一种方法是通过子集化,在这种情况下使用数据框.你可以这样做:

africa.map <- africa.map[africa.map$id == 'Madagascar', ]
africa.points <- africa.points[africa.points$Country == 'Madagascar', ]
ggplot(africa.map, aes(x = long, y = lat, group = group)) +
    geom_polygon(colour = "black", size = 1, fill = "white", aes(group = group)) +
    geom_point(data = africa.points, aes(x = long, y = lat, fill = Tot437, group = NULL), size = 2, shape = 21, colour = "black", size = 2)
Run Code Online (Sandbox Code Playgroud)

...哪些可以给你类似的东西:

马达加斯加