做网站需要办什么手续,html简单网页代码实例,软件工程排名,做网站开发需要学哪些东西在推出两期数据分享之后#xff0c;获取数据的小伙伴们也知道#xff0c;数据格式都是NetCDF(nc) 格式网格数据#xff0c;虽然我在推文分享中说明使用Python、R或者GIS类软件都是可以进行 处理和可视化绘制的#xff0c;但是#xff0c;还是有小伙伴咨询使用编程软件Pyth…在推出两期数据分享之后获取数据的小伙伴们也知道数据格式都是NetCDF(nc) 格式网格数据虽然我在推文分享中说明使用Python、R或者GIS类软件都是可以进行 处理和可视化绘制的但是还是有小伙伴咨询使用编程软件Python或者R处理nc数据正好也想分享一期关于nc网格数据的可视化绘制过程这里我们使用R包进行nc数据的处理(Python处理较为简单将放在空间插值系列的资料中该部分正在加快进程中哦~~)主要涉及的知识点如下 nc数据文件的R包读取 nc数据的可视化绘制 所有完整代码都已整理之我们的线上课程有需要的同学v yidianshuyulove 咨询
nc数据文件的R包读取
在R中读取nc文件我们首选ncdf4包其使用参考网址如下 *https://rdrr.io/cran/ncdf4/*。这里简单介绍下主要的函数 print.ncdf4: Print Information About a netCDF File(输出nc文件基本信息)。 nc_open(): Open a netCDF File(打开nc文件)。 ncvar_get(): Read data from a netCDF file(读取nc文件中变量数据)。 ncatt_get(): Get attribute from netCDF file(获取ncw文件属性)。 对应nc文件常用的使用方法就是以上4中数据获取后(由于是规整的数据格式)可以像其他数据一样进行处理和变换。更多详细内容可参考上面给出的网站。
nc数据的可视化绘制
由于我们使用的是ggplot2进行绘制所以我们直接使用raster包进行nc文件的读取(其实也是调用ncdf4包进行处理)数据我们就使用昨天分享数据的数据数据(代码)分享 | 全球生物气候指标数据集。具体代码如下
library(raster)
library(sf)
library(tidyverse)
library(RColorBrewer)
library(ggtext)
library(showtext)
library(hrbrthemes)nc01 - BIO34_CMCC_85_2040_79.nc
dset01 - raster(nc01)结果如下 ggplot2可视化绘制
在使用ggplot2进行绘制之前我们需要将raster包读取的结果转换成data.frame方便绘图
dset01_df - as.data.frame(dset01,xy TRUE)
head(dset01_df)可以看到数据还是有很多NA值的这里我们选择将NA值删除当然你也可以不删除处理代码如下(包含重命名)
dset01_df - dplyr::rename(dset01_df,long x,laty)
dset01_df_nona - dset01_df %% filter(!is.na(Potential.Evapotranspiration.Hargreaves))结果如下 接下来我们就可以进行可视化设置了这里直接给出绘图代码哈
#自定义颜色
my_colormap - colorRampPalette(rev(brewer.pal(11,Spectral)))(32)
map - ggplot() geom_tile(data dset01_df_nona, aes(xlong, ylat, fillPotential.Evapotranspiration.Hargreaves)) borders(colour black,alpha.8,size.1) #borders(colour black,fillgray50,alpha.4) scale_fill_gradientn(colours my_colormap,namePEH(mm)) labs(title Example of span stylecolor:#D20F26BIO34 - Potential Evapotranspiration (PET, mm/y)/span,subtitle processed map charts with span stylecolor:#1A73E8geom_tile()/span,caption Visualization by span stylecolor:#DD6449DataCharm/span) theme_ipsum(base_family Roboto Condensed) theme(#plot.margin grid::unit(c(0,0,0,0), mm), #去除图片保存的留白问题plot.title element_markdown(hjust 0.5,vjust .5,color black,size 20, margin margin(t 1, b 12)),plot.subtitle element_markdown(hjust 0,vjust .5,size15),plot.caption element_markdown(face bold,size 12),)可视化结果如下 当然我们也可以更换颜色条颜色可视化效果如下 此外我们还可以设置不同投影的可视化绘制效果结果如下 注意这里我们通过如下代码设置了颜色柱(colorbar)的长宽等属性
legend.text element_text(color black,size 11),
legend.key.width unit(5.2, mm),
legend.key.height unit(12, mm)倒是要想获取数据资料分享中的可视化效果我们需使用sf包对数据进行投影转换及使用*geom_sf()*进行转换结果的可视化绘制代码如下
df_sf - sf::st_as_sf(dset01_df, coords c(long, lat), crs 4326) %%sf::st_transform(crs projrobin)jet.colors - colorRampPalette(c(#00007F, blue, #007FFF, cyan, #7FFF7F, yellow, #FF7F00, red, #7F0000))ggplot() #borders(colour black,fillgray50,alpha.5,) geom_sf(data df_sf_nona,aes(colorPotential.Evapotranspiration.Hargreaves),size.08) borders(colour black,alpha1,size.1) scale_color_gradientn(colors jet.colors(7),namePEH(mm))#添加经纬度线scale_x_continuous(breaks seq(-180, 180, by 30)) scale_y_continuous(breaks c(seq(-80, 80, by 20), 85)) labs(x,y,title Example of span stylecolor:#D20F26BIO34-Potential Evapotranspiration (PET, mm/y)/span,subtitle processed map charts with span stylecolor:#1A73E8geom_sf()/span,caption Visualization by span stylecolor:#DD6449DataCharm/span) theme_ipsum(base_family Roboto Condensed) theme(#plot.margin grid::unit(c(0,0,0,0), mm), #去除图片保存的留白问题plot.title element_markdown(hjust 0.5,vjust .5,color black,size 20, margin margin(t 1, b 12)),plot.subtitle element_markdown(hjust 0,vjust .5,size15),plot.caption element_markdown(face bold,size 12),#设置刻度大小axis.title element_text(size8),#设置图例属性legend.position bottom,legend.text element_text(color black,size 10),legend.key.width unit(15, mm),legend.key.height unit(4, mm))最终的可视化效果如下 有小伙伴可能会说“没有灰色的背景”这里说下以下我们在不删除NA值的情况下绘制就会有对应的灰色背景值删除NA值后则没有。我们也放出没有删除NA值的可视化结果 总结
这一期我们还是分享了可视化绘制技巧希望对大家绘制空间nc网格数据有所帮助而Python 处理及可视化的绘制操作打算和空间插值的放在一起尝试使用视频的形式分享给大家~