2013-10-02 4 views
7

Я хотел бы построить растр, содержащий 4 различных значений (1) с категорическим текстом легендой, описывающей такие категориями, как 2, но с цветными коробками:Легенда растровой карты с категориальными данными

Я попытался с помощью легенда, такая как:

legend(1,-20,legend = c("land","ocean/lake", "rivers","water bodies")) 

, но я не знаю, как связать одно значение с отображаемым цветом. Есть ли способ получить цвет, отображаемый с помощью «графика», и использовать его в легенде?

Raster with legend

+0

Перекрестная рассылка: http://gis.stackexchange.com/questions/73143/legend-of-a-raster-map-with-categorical-data –

ответ

13

пакет rasterVis включает в себя метод Raster для levelplot(), который Участки под Застройку категориальные переменные, и производит соответствующую легенду:

library(raster) 
library(rasterVis) 

## Example data 
r <- raster(ncol=4, nrow=2) 
r[] <- sample(1:4, size=ncell(r), replace=TRUE) 
r <- as.factor(r) 

## Add a landcover column to the Raster Attribute Table 
rat <- levels(r)[[1]] 
rat[["landcover"]] <- c("land","ocean/lake", "rivers","water bodies") 
levels(r) <- rat 

## Plot 
levelplot(r, col.regions=rev(terrain.colors(4)), xlab="", ylab="") 

enter image description here

1

По умолчанию цвета, используемый в растровом-участке генерируется rev(terrain.colors()) (см ?raster::plot). Вы можете использовать это, чтобы воссоздать эту последовательность из 4 цветов для легенды - или выбрать случайную последовательность цветов:

my_col = rev(terrain.colors(n = 4)) 
# my_col = c('beige','red','green','blue') 

Первый участок карты с помощью последовательности цветов. legend = FALSE избавляется от стандартной цветовой шкалы:

plot(my_raster, legend = FALSE, col = my_col) 

Добавить пользовательскую легенду в левом нижнем углу. Используйте fill аргумент для создания цветных коробок:

legend(x='bottomleft', legend = c("land", "ocean/lake", "rivers", "water bodies"), fill = my_col) 
Смежные вопросы