本文介绍了用ggplot绘制栅格因子值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述 29岁程序员,3月因学历无情被辞! 我有问题使用ggplot2绘制带有因子值的栅格。 library(ggplot2)库(栅格) f r 提取坐标和值 val xy xy 使用geom_raster()绘制网格。一切正常。 ggplot(xy,aes(x = x,y = y,fill = val))+ geom_raster )+ coord_equal() 我没有连续的栅格,但是是分类的。重新分类栅格: r val xy xy 绘制分类栅格。也可以,但传说是连续的 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 val< - getValues (r) xy xy ggplot .omit(xy),aes(x = x,y = y,fill = val))+ geom_raster()+ coord_equal()p 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 dataf <- system.file("external/test.grd", package="raster")r <- raster(f)extract coordinates and valuesval <- 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 continuousggplot(na.omit(xy), aes(x=x, y=y, fill=val)) + geom_raster() + coord_equal()if I plot the values as factor, the map becomes wrongggplot(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绘制栅格因子值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持! 上岸,阿里云!
08-29 04:02
查看更多