我正在尝试用非洲背景图绘制研究地点的点。我可以独立创建两者,但是我很难将它们叠加在一起。
我正在使用的非洲地图是来自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)
绘制非洲地图:
library(maptools)
africa = readShapePoly("Africa.shp")
africa.map = fortify(africa, region="COUNTRY")
qplot(long, lat, data = africa.map, geom="path", group=group)
在将这两点放在一起同时保留点的显示方面的任何帮助将不胜感激。
最佳答案
尝试这样的事情。似乎为我工作。我认为您的一些经纬度坐标是错误的。 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)
顺便说一句,查看地图可能会很难获得各个区域的详细视图,因此一种解决方法是通过子集化,在这种情况下使用数据框。您可以这样做:
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)
...应该会为您提供类似于以下内容的信息:
关于r - 如何将 map 与ggplot2中点的复杂显示结合在一起?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13655230/