Разработка географических тематических карт с R

В целом можно использовать System.Diagnostics.StackTrace класс, чтобы добраться System.Diagnostics.StackFrame , и затем использовать GetMethod() метод для получения System.Reflection.MethodBase объект. Однако существуют некоторые протесты к этому подходу:

  1. Это представляет время выполнения стек - оптимизация могла встроить метод, и Вы будете не , посмотрите что метод в отслеживании стека.
  2. Это будет не шоу любые собственные кадры, поэтому если будет даже шанс, которым Ваш метод называет собственный метод, это будет не работа, и нет на самом деле никакого в настоящее время доступного способа сделать это.

( ПРИМЕЧАНИЕ: Я просто подробно останавливаюсь ответ обеспеченный Firas Assad .)

59
задан JD Long 11 August 2009 в 15:16
поделиться

5 ответов

Следующий код мне пригодился. Немного настройте его, и все готово. alt text
(источник: eduardoleoni.com )

library(maptools)
substitute your shapefiles here
state.map <- readShapeSpatial("BRASIL.shp")
counties.map <- readShapeSpatial("55mu2500gsd.shp")
## this is the variable we will be plotting
counties.map@data$noise <- rnorm(nrow(counties.map@data))

функция тепловой карты

plot.heat <- function(counties.map,state.map,z,title=NULL,breaks=NULL,reverse=FALSE,cex.legend=1,bw=.2,col.vec=NULL,plot.legend=TRUE) {
  ##Break down the value variable
  if (is.null(breaks)) {
    breaks=
      seq(
          floor(min(counties.map@data[,z],na.rm=TRUE)*10)/10
          ,
          ceiling(max(counties.map@data[,z],na.rm=TRUE)*10)/10
          ,.1)
  }
  counties.map@data$zCat <- cut(counties.map@data[,z],breaks,include.lowest=TRUE)
  cutpoints <- levels(counties.map@data$zCat)
  if (is.null(col.vec)) col.vec <- heat.colors(length(levels(counties.map@data$zCat)))
  if (reverse) {
    cutpointsColors <- rev(col.vec)
  } else {
    cutpointsColors <- col.vec
  }
  levels(counties.map@data$zCat) <- cutpointsColors
  plot(counties.map,border=gray(.8), lwd=bw,axes = FALSE, las = 1,col=as.character(counties.map@data$zCat))
  if (!is.null(state.map)) {
    plot(state.map,add=TRUE,lwd=1)
  }
  ##with(counties.map.c,text(x,y,name,cex=0.75))
  if (plot.legend) legend("bottomleft", cutpoints, fill = cutpointsColors,bty="n",title=title,cex=cex.legend)
  ##title("Cartogram")
}

построить его

plot.heat(counties.map,state.map,z="noise",breaks=c(-Inf,-2,-1,0,1,2,Inf))
60
ответ дан 24 November 2019 в 18:25
поделиться

Взгляните на пакет PBSmapping (см. Виньетку / руководство и демонстрацию) и это O'Reilly Мэшапы данных в статье R (к сожалению, она не бесплатна, но стоит 4,99 $ для загрузки, согласно блоге Revolutions ). ]

4
ответ дан 24 November 2019 в 18:25
поделиться

В галерее R Graphics есть очень похожая карта , которая должна стать хорошей отправной точкой. Код находится здесь: www.ai.rug.nl/~hedderik/R/US2004. Вам нужно будет добавить легенду с помощью функции legend ().

3
ответ дан 24 November 2019 в 18:25
поделиться

Обратите внимание на пакеты

library(sp)
library(rgdal)

, которые удобны для геоданных, а

library(RColorBrewer)  

полезны для раскрашивания. Эта карта создана с помощью вышеуказанных пакетов и этого кода:

VegMap <- readOGR(".", "VegMapFile")
Veg9<-brewer.pal(9,'Set2')
spplot(VegMap, "Veg", col.regions=Veg9,
 +at=c(0.5,1.5,2.5,3.5,4.5,5.5,6.5,7.5,8.5,9.5),
 +main='Vegetation map')

«VegMapFile» - шейп-файл, а «Veg» - отображаемая переменная. Возможно, можно сделать лучше, немного поработав. Похоже, мне не разрешено загружать изображение, вот ссылка на изображение:

11
ответ дан 24 November 2019 в 18:25
поделиться

Решил добавить сюда немного новой информации, поскольку с момента публикации сообщения вокруг этой темы возникла некоторая активность. Вот две отличные ссылки на "Choropleth Map R Challenge" в блоге Revolutions:

Choropleth Map R Challenge

Choropleth Challenge Results

Надеюсь, они будут полезны людям, просматривающим этот вопрос.

Всего наилучшего,

Джей

17
ответ дан 24 November 2019 в 18:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: