построить значения коэффициента растра с помощью ggplot - PullRequest
2 голосов
/ 30 марта 2012

У меня проблемы с построением растра со значениями коэффициентов с помощью ggplot2.

library(ggplot2)
library(raster)

сначала загрузите растровые данные

f <- system.file("external/test.grd", package="raster")
r <- raster(f)

извлеките координаты и значения

val <- getValues(r)
xy <- as.data.frame(xyFromCell(r,1:ncell(r)))
xy <- cbind(xy,val)

построите график с помощью geom_raster ().Все отлично работает.

ggplot(xy, aes(x=x, y=y, fill=val)) + geom_raster() + coord_equal()

У меня не сплошной растр, а классифицированный.Переклассифицируйте растр:

r <- reclass(r, c(0,500,1, 500,2000,2))

val <- getValues(r)
xy <- as.data.frame(xyFromCell(r,1:ncell(r)))
xy <- cbind(xy,val)

построите классифицированный растр.Тоже хорошо, но легенда непрерывна

ggplot(na.omit(xy), aes(x=x, y=y, fill=val)) + geom_raster() + coord_equal()

, если я нанесу значения как фактор, карта станет неправильной

ggplot(na.omit(xy), aes(x=x, y=y, fill=factor(val))) + geom_raster() + coord_equal()

1 Ответ

2 голосов
/ 02 ноября 2012

Построение переклассифицированного графика работает для меня, используя R версии 2.15.1, ggplot2_0.9.2.1 и raster_2.0-12.Если применимо, попробуйте обновить R, пакеты и зависимости.Исходя из слегка измененной версии вашего кода:

f <- system.file("external/test.grd", package="raster")
r <- raster(f)
r <- reclassify(r, c(0,500,1, 500,2000,2))
val <- getValues(r)
xy <- as.data.frame(xyFromCell(r,1:ncell(r)))
xy <- cbind(xy,val)
ggplot(na.omit(xy), aes(x=x, y=y, fill=val)) + geom_raster() + coord_equal()
p <- ggplot(na.omit(xy), aes(x=x, y=y, fill=factor(val))) + 
  geom_raster() + 
  coord_equal()
try(ggsave(plot=p,<some file>,height=8,width=8))

Я получаю: graham jeffries - reclassified raster

Обратите внимание, что classify() устарел и reclassify() является его заменой.

...