用ggplot绘制栅格因子值 [英] plot raster factor values with ggplot

查看:250
本文介绍了用ggplot绘制栅格因子值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有问题使用ggplot2绘制带有因子值的栅格。

  library(ggplot2)
库(栅格)


  f < - 系统。文件(external / test.grd,package =raster)
r < - 光栅(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()


解决方案

使用R版本2.15.1,ggplot2_0.9.2.1和raster_2.0-12为我绘制重分类图。如果适用,请尝试更新R,软件包和依赖项。从你的代码稍微修改版本开始:

  f < -  system.file(external / test.grd, (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 .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))

我得到:



请注意 classify()已被折旧,并且重新分类()是其替代品。


I have problems plotting a raster with factor values using ggplot2.

library(ggplot2)
library(raster)

first, load raster data

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

extract coordinates and values

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

plot the grid using geom_raster(). Everything works fine.

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

I don not have a continuous raster, but a classified. Reclass the raster:

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)

plot the classified raster. Also OK, but legend is continuous

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

if I plot the values as factor, the map becomes wrong

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

解决方案

Plotting the reclassified plot works for me using R version 2.15.1, ggplot2_0.9.2.1 and raster_2.0-12. If applicable, try updating R, packages, and dependencies. Proceeding from a slightly modified version of your code:

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

I get:

Note that classify() has been depreciated and reclassify() is its substitute.

这篇关于用ggplot绘制栅格因子值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆