前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >R-ggplot2 和rasterVis 实现空间栅格(Raster)数据的可视化绘制教程

R-ggplot2 和rasterVis 实现空间栅格(Raster)数据的可视化绘制教程

作者头像
DataCharm
发布2021-02-22 12:00:50
6.6K1
发布2021-02-22 12:00:50
举报
文章被收录于专栏:数据 学术 商业 新闻

本期将推出一篇关于栅格(Raster)数据的R语言可视化的绘制教程,其目的也是为大家提供绘图思路。本期绘制的数据为30m的土地利用(land use)数据,具体区域为广州市。主要内容如下:

  • R-ggplot2 可视化绘制
  • R-rasterVis 可视化绘制
  • Arcgis 可视化结果展示

R-ggplot2 可视化绘制

由于对ggplot2的绘图体系还不是很了解,所以这一步花费很长时间,但也对ggplot2的绘图语法有了更深的理解。话不多说,我们直接上代码,如下:

代码语言:javascript
复制
# Raster_data_Vis.R
library(ggplot2)
library(raster)
library(viridis)  
library(ggthemes) 
library(sf)

# 添加字体
windowsFonts(
   Cinzel = windowsFont("Cinzel"),#这里使用的是字体的主题名称
   Poppins = windowsFont("Poppins"),
   IBMPSBold = windowsFont("IBMPlexSans-Bold"),
   Roboto_Mono = windowsFont("Roboto Mono"),
   Open_Sans = windowsFont("Open Sans"),
   Open_Sans_ExtraBold = windowsFont("Open Sans ExtraBold"),
   Times_New_Roman = windowsFont("Times New Roman")
  )

#数据
datafold <- 'E:\\Data_ning\\RStudio projects\\guanzhoulanduse\\gzlu.tif'
test <- raster(datafold) 

#很关键的一步:将栅格数据转成可供ggplot2绘制的数据格式
test_spdf <- as(test, "SpatialPixelsDataFrame")
test_df <- as.data.frame(test_spdf)
# 赋值列名
colnames(test_df) <- c("value", "x", "y")

#开始绘图
land_use <- ggplot() +
    geom_raster(data = test_df , aes(x = x, y = y,fill = factor(value))) + 
    scale_fill_manual(name = "Category",values = classcolor,labels = landclass) +
    labs(x ='Longitude(E)',y="Latitude(N)",
       title = "Raster data Charts Exercise",
       subtitle = "land use data",
       caption = 'Visualization by DataCharm')+
    theme_bw()+
    theme(text = element_text(family = "Times_New_Roman",face='bold'),
          title = element_text(family = 'Times_New_Roman',size = 16,face = 'bold'),
          axis.text = element_text(family = 'Times_New_Roman',size = 12,face = 'bold'),  
          #修改刻度线内
          axis.ticks.length=unit(-0.22, "cm"),
          #设置刻度label的边距
           axis.text.x = element_text(margin=unit(c(0.5,0.5,0.5,0.5), "cm")), 
           axis.text.y = element_text(margin=unit(c(0.5,0.5,0.5,0.5), "cm"))
         )
land_use

可视化结果如下:

注意:

  • 在使用ggsave()保存成pdf文件时,有些字体将会消失,后续会解决此类问题。上面结果为png格式。

R-rasterVis 可视化绘制

在查阅相关资料时发现,绘制Raster数据时,也可采用R第三方拓展包 rasterVis 包进行快速绘制,绘制代码如下:

代码语言:javascript
复制
library(raster)
library(rasterVis)

nlcd <- brick('E:\\Data_ning\\RStudio projects\\guanzhoulanduse\\gzlu.tif')
names(nlcd) = c('Gzland')
landclass <- c("Cropland", "Forest", "Grassland", "Shrubland", "Wetland", "Water", "Impervious surface", "Bareland")
classcolor <- c("#96298A", "#05AD27", "#EB6805", "#E6E8DF", "#2200FF", "#0D4763", "#DEE64C", "#4A150B")

nlcd2011 <- nlcd[[1]]
nlcd2011 <- ratify(nlcd2011)
# 
test <- levels(nlcd2011)[[1]]
test$landcover <- landclass
levels(nlcd2011) <- test

png(file = "F:\\DataCharm\\R-rasterVis\\guangzhou_landuse3.png", 
    height=nrow(nlcd2011), width=ncol(nlcd2011), res=500)
levelplot(nlcd2011, col.regions = classcolor, main = 'Guangzhou LandUse',
                  xlim=c(112.9, 114.2), ylim=c(22.4, 24))

dev.off()

可视化结果如下:

具体的其他图层属性设置,大家可以直接查看官网:rasterVis官网

Arcgis 可视化结果展示

前面介绍了两种代码可视化的绘制教程,其实最开始我是使用Arcgis进行可视化展示的,不得不说,Arcgis 还是 很强大方便的,但代码绘图有代码绘图的好,我们各取所需,这里只展示最终的制作结果:

注: 图中标题年份可能不正确,大家阅读时留意。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-10-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DataCharm 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • R-ggplot2 可视化绘制
  • R-rasterVis 可视化绘制
  • Arcgis 可视化结果展示
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档