我正在使用spplot研究德国的热图,我有来自GADM德国形状文件 Level 1的形状文件
http://biogeo.ucdavis.edu/data/gadm2.8/rds/DEU_adm1.rds
我能够制作热图,但我认为地图被错误地绘制,例如在我的数据中"不来梅"的值为0,但"萨克森 - 安哈尔特"被绘制为带有0值的白色,是否与.rds文件中的映射?
这是我的代码
library(sp) library(latticeExtra) ### load the German federal state polygons my.data <- readRDS("DEU_adm1.rds") sample <- read.csv(file.choose()) final <- merge(x =my.data@data, y = sample, by = "ID_1", all.y = TRUE) my.data@data <- data.frame(my.data@data, sample[match(my.data@data[,"ID_1"], sample[,"ID_1"]),]) ### German language hick-ups need to be resolved enamessp <- gsub("?", "ue", my.data@data$NAME_1) my.data@data$NAME_1 <- enamessp ### insert the newly created clicksvariable into the spatial data frame my.data$clicks <- sample$clicks clrs <- c('#F4F1A2', '#F4F1A2', '#E6EAA2', '#E6EAA2', '#CFE3A2', '#CFE3A2', '#9AD0A3', '#9AD0A3', '#7FC9A4', '#7FC9A4', '#32B9A3', '#32B9A3', '#00A7A2', '#00667E', '#00667E', '#1D4F73' ) spplot(my.data, zcol = "clicks", main = "Region Distribution", col.regions = clrs,at=sort(sample$clicks))
以下是样本的输入:
structure(list(ID_1 = c(7L, 4L, 5L, 14L, 12L, 15L, 11L, 13L, 2L, 3L, 16L, 6L, 10L, 9L, 8L, 1L), clicks = c(19L, 4L, 0L, 12L, 4L, 3L, 8L, 5L, 41L, 12L, 4L, 11L, 59L, 19L, 4L, 25L)), .Names = c("ID_1", "clicks"), class = "data.frame", row.names = c(NA, -16L))
输出如下:
spplot
奇怪的是,我首先去了几个盲道.但基本上你是亲密的,这at=sort(sample$clicks)
是搞砸了,你只需要摆脱它.
library(sp) ### load the German geo map polygons my.data <- readRDS("DEU_adm1.rds") ### sample "clicks" data with German state coded as ID_1 sample <- data.frame( ID_1 = c( 7, 4, 5, 14, 12, 15, 11, 13, 2, 3, 16, 6, 10, 9, 8, 1L), clicks = c(19, 4, 0, 12, 4, 3, 8, 5, 41, 12, 4, 11, 59, 19, 4, 25L)) ### Merge sample data with geo map data final <- merge(x =my.data@data, y = sample, by = "ID_1", all.y = TRUE) my.data@data <- data.frame(my.data@data, sample[match(my.data@data[,"ID_1"], sample[,"ID_1"]),]) ### German language hick-ups need to be resolved enamessp <- gsub("?", "ue", my.data@data$NAME_1) my.data@data$NAME_1 <- enamessp # print out states and clicks (sorted high to low) for verification final[ order(-final$clicks),c("ID_1","NAME_1","HASC_1","clicks") ] ### insert the newly created clicksvariable into the spatial data frame my.data$clicks <- final$clicks clrs <- c('#F4F1A2','#F4F1A2','#E6EAA2','#E6EAA2', '#CFE3A2','#CFE3A2','#9AD0A3','#9AD0A3', '#7FC9A4','#7FC9A4','#32B9A3','#32B9A3', '#00A7A2','#00667E','#00667E','#1D4F73') spplot(my.data, zcol = "clicks", main = "Clicks Region Distribution", col.regions = clrs)
产量:
以下是检查它的数据:
> print(sample[ order(-sample$clicks), ]) ID_1 clicks land hasc 13 10 59 Saxony-Anhalt DE.ST 9 2 41 Lower Saxony DE.NI 16 1 25 Thuringia DE.TH 1 7 19 DE.BW 14 9 19 Saxony DE.SN 4 14 12 DE.BR 10 3 12 North Rhine-Westphalia DE.NW 12 6 11 DE.SL 7 11 8 Hesse DE.HE 8 13 5 Mecklenburg-West Pomerania DE.MV 2 4 4 Bavaria DE.BY 5 12 4DE.HB 11 16 4 Rhineland-Palatinate DE.RP 15 8 4 DE.SH 6 15 3 DE.HH 3 5 0 DE.BE