如何在R - 大陆层面创建世界热图

时间:2015-01-21 22:58:01

标签: r heatmap

我正在尝试使用table:

为country.txt文件创建热图
Region  Value
Europe  5
Africa  6
America 7
Asia    8

我知道我可以将地图视为:

map.world <- map_data(map = "world")
mapCountryData(sPDF,nameColumnToPlot = 'continent')

如何将数据应用于地图?即我希望这个具有最高价值的大陆让我们说绿色,最低值的continetn是红色的。

1 个答案:

答案 0 :(得分:2)

这是一个可以使用的简化大陆shapefile。我会更改投影并移除antarctica以获取我要放入出版物的内容,但这会给你一个开始:

library(rgdal)
library(rgeos)
library(ggplot2)
library(httr)

url <- "https://gist.githubusercontent.com/hrbrmstr/91ea5cc9474286c72838/raw/f3fde312c9b816dff3994f39f2bcda03209eff8f/continents.json"
stop_for_status(GET(url, write_disk("continents.json")))
continents <- readOGR("continents.json", "OGRGeoJSON")
continents_map <- fortify(continents, region="CONTINENT")

data <- read.table(text="id  value
Europe  5
Africa  6
America 7
Asia    8", header=TRUE, stringsAsFactors=FALSE)


gg <- ggplot()
gg <- gg + geom_map(data=continents_map,
                    map=continents_map,
                    aes(x=long, y=lat, map_id=id),
                    color="black")
gg <- gg + geom_map(data=data,
                    map=continents_map,
                    aes(map_id=id, fill=value),
                    color="black")
gg <- gg + scale_fill_distiller("PuBu") # needs latest ggplot2
gg <- gg + coord_equal()
gg <- gg + theme_bw()
gg <- gg + labs(x=NULL, y=NULL)
gg <- gg + theme(panel.border=element_blank())
gg <- gg + theme(panel.grid=element_blank())
gg

enter image description here

以下是shapefile中表示的各大洲的名称:

continents@data$CONTINENT
## [1] Asia          North America Europe        Africa        South America
## [6] Oceania       Australia     Antarctica