本期将推出一篇关于栅格(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 还是 很强大方便的,但代码绘图有代码绘图的好,我们各取所需,这里只展示最终的制作结果:
注: 图中标题年份可能不正确,大家阅读时留意。