用ggplot绘制栅格因子值 [英] plot raster factor values with 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 andreclassify()
is its substitute.这篇关于用ggplot绘制栅格因子值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!