疾病地图使用R

时间:2014-04-21 17:33:20

标签: r ggplot2

这里我的数据集附在.csv文件中。有些人可以通过在R中使用ggplot2来帮助我制作疾病图。

由于

Towns         Observed  Expected Latitude   Longitude
Jarawala Town   183 34.584  31.33429    73.419487
Sumindri Town   59  5.6927  31.0690531  72.9361303
Tandiawala Town 28  2.8326  31.0316667  73.1316667
Jhumra Town 23  1.0923  31.5666667  73.1833333
Madina Town 127 21.95   31.4178652  73.120208
Iqbal Town  40  6.9147  31.4932177  73.1051778
Jinnah Town 43  16.89   31.4144303  73.0768364
Layyalpur Town  97  38.121  31.4401011  73.0680131

1 个答案:

答案 0 :(得分:7)

虽然我普遍认为SO“不是免费的代码编写服务”,但这个问题非常简单,并且说明了在R中实现相当复杂的可视化是多么容易。我也敏锐地意识到它是多么难以获得从R开始。所以我建议你使用作为起点,研究代码,阅读有关所用各种功能的文档,并自己扩展

library(rgdal)                            # for readOGR(...)
library(RColorBrewer)                     # for brewer.pal(...)
library(ggplot2)

setwd("< directory with all your files >")
pak <- readOGR(dsn=".",layer="PAK_adm3")  # map of Pakistan
map <- pak[pak$NAME_3=="Faisalabad",]     # extract Faisalabad region
centroids <- data.frame(coordinates(map)) # label(s) for the polygons
colnames(centroids) <- c("long","lat")
centroids$name <- map@data$NAME_3
palette <- brewer.pal(9,"YlOrRd")         # Yellow-Orange-Red color palette
ggplot(map)+
  geom_path(aes(x=long,y=lat,group=group))+
  geom_text(data=centroids, aes(x=long,y=lat, label=name))+
  geom_point(data=data,aes(x=Longitude,y=Latitude,size=Observed,color=Observed))+
  scale_color_gradient(low=palette[5],high=palette[9])+
  scale_size(guide="none")+
  theme_bw()+coord_fixed()

<强>解释

据我所知,您的所有数据均来自巴基斯坦的费萨拉巴德地区。首先,我们需要一张巴基斯坦地图。这可以从许多来源获得,但我更喜欢优秀的Global Administrative Areas网站,您可以在其中下载巴基斯坦shapefile here。当然,这些都是zip存档,因此您必须将文件解压缩到一个目录中(在代码中标注为“包含所有文件的目录”)。从那里工作流程是:

 1. Read shapefile: pak <- readOGR(...) 
 2. Extract the appropriate region: map <- pak[...]
 3. Extract region name and centroid (for the label)
 4. Generate color palette: palette <- brewer.pal(...)
 5. Render the map, with points overlaid.

编辑我注意到R中存在与GADM的直接接口,这避免了手动下载和提取shapefile。这使用了包raster中的getData(...)函数。

# setwd("< directory with all your files >")
# pak <- readOGR(dsn=".",layer="PAK_adm3")  # map of Pakistan
library(raster)
pak <- getData("GADM",country="PAK",level=3) # map of Pakistan, admin level 3.