我试图分别为美国绘制州名及其价值的热图。我得到热图的代码是:
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中先前定义的代码,但我需要在绘图上添加状态标签及其值。 我输入此代码的输出: 在这里,我需要显示州名和各自对应的相应值。请为此提出解决方案。
答案 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)])) })
将面板功能添加到绘图中,可以在状态在数据中具有值的坐标处添加文本。