Создать тепловую карту США с сокращениями штатов и характеристической частотой в R - PullRequest
8 голосов
/ 16 декабря 2011

Я хотел бы создать карту США (возможно, тепловую карту), чтобы показать частоту определенной характеристики среди штатов.Я не уверен, какой пакет использовать, или мои данные в правильной форме.Мои данные находятся в таблице tf

tf
 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

По большей части мои аббревиатуры обозначены в США (за исключением нескольких случаев в Канаде).Каков наилучший предлагаемый подход для графического отображения этого на карте?

Теперь, как получить гранулярность менее 50 для цвета?

enter image description here

Ответы [ 2 ]

8 голосов
/ 19 декабря 2011

Другой подход с spplot:

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)])

Затем вы получите карту и конвертируетеэто к SpatialPolygons:

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'])

Добавленоизображение enter image description here

8 голосов
/ 16 декабря 2011

два пакета: карты, ggplot2.Отличный пример на:

...