2016-01-09 8 views
5

я работал на тепловой карте Германии с использованием spplot, у меня был файл формы из GADM German shape file Level 1Тепловая карта Германии с использованием spplot

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

Я могу сделать Heatmap, но я полагаю, карты ошибочно построены, как, например, в моих данных «Бремен» имеет значение 0, но «Sachsen-Anhalt » рисуется как белый с 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 [email protected], y = sample, by = "ID_1", all.y = TRUE) 
[email protected] <- data.frame([email protected], sample[match([email protected][,"ID_1"], sample[,"ID_1"]),]) 
### German language hick-ups need to be resolved 
enamessp <- gsub("?", "ue", [email protected]$NAME_1) 
[email protected]$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)) 

Вот dput для образца:

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

Выход выглядит следующим образом: enter image description here

+3

Извините, но я на самом деле было интересно, если "немецкий тепловой карте" было что-то отличная от нормальной карты тепла :). –

+0

Нет, дело не только в том, что у меня проблемы с неправильным построением областей, это файл формы? Вы можете помочь здесь? – PSraj

+0

Я посмотрел на него, но где я могу получить «DEU_adm1.rds»? –

ответ

4

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 [email protected], y = sample, by = "ID_1", all.y = TRUE) 
[email protected] <- data.frame([email protected], 
          sample[match([email protected][,"ID_1"], 
          sample[,"ID_1"]),]) 

### German language hick-ups need to be resolved 
enamessp <- gsub("?", "ue", [email protected]$NAME_1) 
[email protected]$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) 

Уступая:

enter image description here

А вот данные, чтобы проверить его против:

> 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 
+0

Да, это исправляет проблему, но я удивляюсь, почему 'at = sort (sample $ clicks)' закручивает вещи, в идеале это должно быть связано с количеством щелчков (согласно описанию пакета), а затем соответствующим образом меняет цвет, исправьте меня, если я ошибаюсь здесь – PSraj

+0

Нет, чтение документов в '? spplot': параметр' at' называется «указывать, при каких значениях цвета меняются». Таким образом, он устанавливает точки перехода. Вам, вероятно, не нужно это делать. 'zcol' делает то, что вы думаете, что делает, и вы уже указали это. –

+0

Извините, но как вы считаете, карта верна? Самые высокие клики для «Северный Рейн-Вестфален» (59 кликов), а не «Sachsen-Anhalt» (5 кликов) (это отображается как самый темный синий цвет в цветовой гамме), аналогично «Бавария» должна быть зеленой в соответствии с цветом (41 клик), но он желтоватый. – PSraj

 Смежные вопросы

  • Нет связанных вопросов^_^