Heat map of Germany using spplot

I worked on a heat map of Germany using spplot, I had a form file from GADM German form file Level 1

http://biogeo.ucdavis.edu/data/gadm2.8/rds/DEU_adm1.rds

I can make a heat map, but I believe that the maps are erroneously constructed, for example, in my data, β€œBremen” has a value of 0, but β€œSaxony-Anhalt” β€œis displayed as white with 0 values, this is something with a display in the .rds file?

Here is my code

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

Here is an example for a sample:

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

The result is as follows: enter image description here

+5
source share
1 answer

spplot works weirdly, and first I went down a couple of blind alleys. But basically, you were close that at=sort(sample$clicks) twisted it, you just need to get rid of it.

 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) 

Yielding:

enter image description here

And here is the data to verify:

 > 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 4 <Null> DE.HB 11 16 4 Rhineland-Palatinate DE.RP 15 8 4 DE.SH 6 15 3 DE.HH 3 5 0 DE.BE 
+4
source

Source: https://habr.com/ru/post/1240224/


All Articles