地圖可視化繪制 | R-ggplot2 NC地圖文件可視化

在推出兩期數據分享之后,獲取數據的小伙伴們也知道,數據格式都是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/*。這里簡單介紹下主要的函數:

  1. print.ncdf4: Print Information About a netCDF File(輸出nc文件基本信息)。

  2. nc_open(): Open a netCDF File(打開nc文件)。

  3. ncvar_get(): Read data from a netCDF file(讀取nc文件中變量數據)。

  4. 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,lat=y)
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(x=long,?y=lat,?fill=Potential.Evapotranspiration.Hargreaves))?+borders(colour?=?"black",alpha=.8,size=.1)?+#borders(colour?=?"black",fill="gray50",alpha=.4)?+scale_fill_gradientn(colours?=?my_colormap,name="PEH(mm)")?+labs(title?=?"Example?of?<span style='color:#D20F26'>BIO34?-?Potential?Evapotranspiration?(PET,?mm/y)</span>",subtitle?=?"processed?map?charts?with?<span style='color:#1A73E8'>geom_tile()</span>",caption?=?"Visualization?by?<span style='color:#DD6449'>DataCharm</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,size=15),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?=?"+proj=robin")jet.colors?<-?colorRampPalette(c("#00007F",?"blue",?"#007FFF",?"cyan",?"#7FFF7F",?"yellow",?"#FF7F00",?"red",?"#7F0000"))ggplot()?+?#borders(colour?=?"black",fill="gray50",alpha=.5,)?+geom_sf(data?=?df_sf_nona,aes(color=Potential.Evapotranspiration.Hargreaves),size=.08)?+borders(colour?=?"black",alpha=1,size=.1)?+scale_color_gradientn(colors?=?jet.colors(7),name="PEH(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 style='color:#D20F26'>BIO34-Potential?Evapotranspiration?(PET,?mm/y)</span>",subtitle?=?"processed?map?charts?with?<span style='color:#1A73E8'>geom_sf()</span>",caption?=?"Visualization?by?<span style='color:#DD6449'>DataCharm</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,size=15),plot.caption?=?element_markdown(face?=?'bold',size?=?12),#設置刻度大小axis.title?=?element_text(size=8),#設置圖例屬性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 處理及可視化的繪制操作打算和空間插值的放在一起,嘗試使用視頻的形式分享給大家~

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/712246.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/712246.shtml
英文地址,請注明出處:http://en.pswp.cn/news/712246.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

牛客周賽 Round 34(A,B,C,D,E,F,G)

把這場忘了。。官方也遲遲不發題解 比賽鏈接 出題人題解 A 小紅的字符串生成 思路&#xff1a; 枚舉四種字符串打印出來即可&#xff0c;為了防止重復可以用set先去一下重。 code&#xff1a; #include <iostream> #include <cstdio> #include <cstring&g…

Opencv實戰(4)詳解輪廓

輪廓 Opencv實戰系列&#xff0c;前文&#xff1a; 文章目錄 輪廓(1).查找繪制1.findContours()2.drawContours() (2).層級結構(3).篩選輪廓(4).凸包 (1).查找繪制 預處理&#xff1a; 灰度化&#xff1a;使用cv::cvtColor()圖像去噪&#xff1a;使用高斯濾波cv::Gaussian(…

Acwing-基礎算法課筆記之數學知識(擴展歐幾里得算法)

Acwing-基礎算法課筆記之數學知識&#xff08;擴展歐幾里得算法&#xff09; 一、擴展歐幾里得算法1、裴蜀定理2、過程模擬3、代碼模板 二、線性同余方程1、定義2、模擬過程3、結論證明 一、擴展歐幾里得算法 1、裴蜀定理 對于任意正整數 a a a&#xff0c; b b b&#xff0…

day48 ● 198.打家劫舍 ● 213.打家劫舍II ● 337.打家劫舍III

一遍過。 當前房屋偷與不偷取決于 前一個房屋和前兩個房屋是否被偷了。所以這里就更感覺到&#xff0c;當前狀態和前面狀態會有一種依賴關系&#xff0c;那么這種依賴關系都是動規的遞推公式。 class Solution { public:int rob(vector<int>& nums) {vector<vec…

門店縱深不足、入口有遮擋影響客流準確率?近景客流幫你搞定!

為了優化運營策略、提升門店營收&#xff0c;很多店鋪和商場都會安裝客流攝像機。但是在實際應用中&#xff0c;由于門店縱深受限等原因&#xff0c;導致無法使用之前的常規客流產品。 針對這種情況&#xff0c;悠絡客最新研發了近景客流產品&#xff0c;即使存在入口被遮擋或門…

內網信息搜集

目錄 內網基礎知識 基本流程圖 怎么判斷是否在域內 常規信息類收集-應用&服務&權限等 cs信息搜集 bloodhound安裝及使用 內網基礎知識 工作組&#xff1a;將不同的計算機按照功能分別列入不同的組&#xff0c;想要訪問某個部門的資源&#xff0c;只要在【網絡】里…

pyqt教程

一、組件安裝配置 1.安裝組件 在Anaconda Prompt下進入自己的python環境 pip install PyQt5 pip install PyQt5-tools 2.vscode安裝插件 3.配置路徑 配置Pyuic:Cmd與Qtdesigner:Path路徑 1.Pyuic:Cmd路徑 一般是在你安裝的python環境下的 \Scripts\pyuic5.exe 2.Qtdesigner:P…

anaconda簡介以及安裝(Windows)

介紹 Anaconda是一個開源的Python發行版本&#xff0c;它是一個打包的集合&#xff0c;里面預裝了conda、Python、眾多packages、科學計算工具等。Anaconda的目的是方便使用Python進行數據科學研究&#xff0c;它涵蓋了數據科學領域常見的Python庫&#xff0c;并且自帶了專門用…

Python的循環結構練習

歸納編程學習的感悟&#xff0c; 記錄奮斗路上的點滴&#xff0c; 希望能幫到一樣刻苦的你&#xff01; 如有不足歡迎指正&#xff01; 共同學習交流&#xff01; &#x1f30e;歡迎各位→點贊 &#x1f44d; 收藏? 留言?&#x1f4dd; 生命對某些人來說是美麗的&#xff0c…

我國每年研究生的畢業數量統計分享

本數據集詳細記錄了自1949年至2021年我國每年研究生的畢業數量&#xff08;包括碩士和博士學位的畢業生&#xff09;。在2021年&#xff0c;我國的研究生畢業生人數達到了772,761人&#xff0c;此數字比上一年度增加了44,000人。 統計的數據單位使用的是人數。 數據展示&…

mysql,for循環執行sql

遇到一個問題&#xff0c;我需要模擬上百萬數據來優化sql&#xff0c;線上數據down不下來&#xff0c;測試庫又沒有&#xff0c;寫代碼執行要么慢要么就是sql語句太長。 于是&#xff0c;直接用mysql自帶的功能去實現&#xff01; 簡單而簡單 mysql可以for循環&#xff1f;沒…

Laravel框架: Call to a member function connect() on null 異常報錯處理

Laravel框架&#xff1a; Call to a member function connect() on null 異常報錯處理 Date: 2024.03.01 21:03:11 author: lijianzhan 原文鏈接: https://learnku.com/laravel/t/63721 問題&#xff1a; local.ERROR: Call to a member function connect() on null {"…

【前端素材】推薦優質后臺管理系統 Greeva平臺模板(附源碼)

一、需求分析 1、系統定義 后臺管理系統是一種用于管理網站、應用程序或系統的管理界面&#xff0c;通常由管理員和工作人員使用。它提供了訪問和控制網站或應用程序后臺功能的工具和界面&#xff0c;使其能夠管理用戶、內容、數據和其他各種功能。 2、功能需求 后臺管理系…

使用mininet快速入門ONOS路由交換技術與原理-路由篇

上篇文章 《使用mininet快速入門ONOS路由交換技術與原理-交換篇》 使用mininet搭建了一個簡單的網絡拓撲&#xff0c;并實現了同一交換機下同網段多主機的通信&#xff0c;其中涉及到的通信知識主要以二層mac地址通信為主。 但在蕓蕓網絡的世界中&#xff0c;主機間的通信除了…

【C++】數組、函數、指針

文章目錄 1.數組1.1一維數組1.2二維數組 2.函數3.指針&#xff1a;可以通過指針間接訪問內存(指針記錄地址&#xff09;3.1 指針的定義和使用3.2 指針所占用空間3.3 空指針和野指針3.4 const修飾指針3.5指針和數組3.6指針和函數3.7練習&#xff08;指針、數組、函數&#xff09…

綜合練習(二)

目錄 列出薪金比 SMITH 或 ALLEN 多的所有員工的編號、姓名、部門名稱、領導姓名、部門人數&#xff0c;以及所在部門的平均工資、最高和最低工資 補充 spool Oracle從入門到總裁:https://blog.csdn.net/weixin_67859959/article/details/135209645 列出薪金比 SMITH 或 AL…

STM32USART串口數據包

文章目錄 前言一、介紹部分數據包兩種包裝方式&#xff08;分割數據&#xff09;HEX數據包文本數據包 數據包的收發流程數據包的發送數據包的接收固定包長的hex數據包接收可變包長的文本數據包接收 二、實例部分固定包長的hex數據包接收連接線路代碼實現 可變包長的文本數據包接…

【InternLM 實戰營筆記】基于 InternLM 和 LangChain 搭建你的知識庫

準備環境 bash /root/share/install_conda_env_internlm_base.sh InternLM升級PIP # 升級pip python -m pip install --upgrade pippip install modelscope1.9.5 pip install transformers4.35.2 pip install streamlit1.24.0 pip install sentencepiece0.1.99 pip install a…

MySQL 多表查詢 連接查詢 外連接

介紹 MySQL 多表查詢 連接查詢 內連接 外連接分為兩種&#xff0c;左外和右外連接&#xff0c; 左外&#xff1a;相當于查詢表1(左表)的所有數據 包含 表1和表2交集部分的數據,完全包含左表的數據 右外&#xff1a;相當于查詢表2(右表)的所有數據 包含 表1和表2交集部分的數據…

比特幣暴漲逼近歷史最高點;阿里云全線降價20%丨 RTE 開發者日報 Vol.155

開發者朋友們大家好&#xff1a; 這里是 「RTE 開發者日報」 &#xff0c;每天和大家一起看新聞、聊八卦。我們的社區編輯團隊會整理分享 RTE &#xff08;Real Time Engagement&#xff09; 領域內「有話題的 新聞 」、「有態度的 觀點 」、「有意思的 數據 」、「有思考的 文…