如何获得状态名称以及如何将其值叠加在美国R的热图图上

时间:2015-01-28 07:04:14

标签: r

我试图分别为美国绘制州名及其价值的热图。我得到热图的代码是:

library(maps)
library(maptools)
library(sp)
txt <- "AB  AK  AL  AN  AR  AZ  CA  CO  CT  DC  DE  EN  FL  GA  HI  IA  ID  IL  IN  KS
    1  21  31   1  12  56 316  53  31  16   7   1 335  63  11  42  29  73  40  2"

dat <- stack(read.table(text = txt,  header = TRUE))
names(dat)[2] <-'state.abb'
dat$states <- tolower(state.name[match(dat$state.abb,  state.abb)])
mapUSA <- map('state', fill=TRUE, plot=FALSE)
nms <- sapply(strsplit(mapUSA$names,  ':'),  function(x)x[1])
USApolygons <- map2SpatialPolygons(mapUSA,  IDs = nms,  CRS('+proj=longlat'))
idx <- match(unique(nms),  dat$states)
dat2 <- data.frame(value = dat$value[idx], state = unique(nms))
row.names(dat2) <- unique(nms)

USAsp <- SpatialPolygonsDataFrame(USApolygons,  data = dat2)
spplot(USAsp['value'])

这是我用于分析的stackoverflow中先前定义的代码,但我需要在绘图上添加状态标签及其值。 我输入此代码的输出: Heat map 在这里,我需要显示州名和各自对应的相应值。请为此提出解决方案。

1 个答案:

答案 0 :(得分:1)

您可以尝试将spplot功能更改为:

spplot(USAsp['value'],panel = function(x,y,z,subscripts,...) {
  panel.polygonsplot(x,y,z,subscripts,...)
  sp.text(coordinates(USAsp[!is.na(USAsp$value),]), 
      paste(row.names(USAsp[!is.na(USAsp$value),]),"\n",USAsp$value[!is.na(USAsp$value)])) })

将面板功能添加到绘图中,可以在状态在数据中具有值的坐标处添加文本。