看板 R_Language 關於我們 聯絡資訊
[問題類型]: 程式諮詢(我想用R 做某件事情,但是我不知道要怎麼用R 寫出來) [軟體熟悉度]: 入門(寫過其他程式,只是對語法不熟悉) [問題敘述]: 想請教各位大大 目前我有一筆降雨資料(ncdf檔),資料的維度為經度41格,緯度77格,總天數為9862天, 現在我想要將所有網格所有天數(41x77x9862)的降雨值出來畫累積分布圖(CDF),我所用 的指令為ecdf(),但圖始終畫不出來,Console右上角的紅點出現了快半小時後消失且沒 有出現錯誤訊息,但畫圖區還是一片空白,不確定是不是要畫的值太多所導致還是另有 其他原因,所以想請教各位大大有什麼方法可以解決這個問題,謝謝。 降雨資料放置於此:http://0rz.tw/JI056 [程式範例]: library(ncdf4) library(data.table) library(tidyverse) memory.limit(size=50000) #讀取資料 HIRAM_WRF_file <- "C:\\Users\\TOM\\Desktop\\197901-200512_pr_axis_time_domain.nc" HIRAM_WRF_data <- nc_open(HIRAM_WRF_file) print(HIRAM_WRF_data) hiram_wrf_lon <- ncvar_get(HIRAM_WRF_data,"lon") hiram_wrf_lat <- ncvar_get(HIRAM_WRF_data,"lat") hiram_wrf_time <- ncvar_get(HIRAM_WRF_data,"time") hiram_wrf_pr <- ncvar_get(HIRAM_WRF_data,"pr") hiram_wrf_pr dim(hiram_wrf_pr) #畫CDF曲線 hiram_wrf_pr_cdf <- ecdf(hiram_wrf_pr[hiram_wrf_pr>=0]) summary(hiram_wrf_pr_cdf) plot(hiram_wrf_pr_cdf,col="black",lwd=2 ,xlim=c(0,2000),ylim=c(0,1),xlab="pr(mm)",ylab="CDF") [環境敘述]: https://imgur.com/psT3fMx [關鍵字]: 累積分布函數 CDF ncdf檔 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.162.166.123 ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1558673077.A.F67.html
andrew43: 可以貼一張你期待的圖嗎?外觀類似即可。 05/24 14:16
AndrewShi: https://imgur.com/JUWsZdb 05/24 14:51
AndrewShi: andrew大~我如果把範圍改成>=100就可以畫的出來(下圖 05/24 15:15
AndrewShi: ),我在想可能是值過多的問題,不知道有沒有什麼方法 05/24 15:15
AndrewShi: 可以解決 05/24 15:15
AndrewShi: https://imgur.com/NMMbhc6 05/24 15:16
andrew43: 確實ram爆掉了。我覺得改成分組加權cdf來做應該就好了 05/24 16:02
andrew43: https://pastecode.xyz/view/3ad49fde 05/24 16:04
AndrewShi: 感謝andrew大,不過想請教你用wtd.Ecdf()如果像這樣 05/24 18:08
AndrewShi: 不分配權重給它是不是畫出來就等於原本用ecdf()畫出 05/24 18:08
AndrewShi: 來是一樣的,只是把所有的值做分組再畫而已呢?! 05/24 18:08
andrew43: 對,只不過會有一點失真,但切夠細在圖上看不出來 05/24 18:58
andrew43: 等等,要權重才是喔 05/24 20:17
AndrewShi: 什麼意思??是要分配權重才會等於用ecdf畫出來的一樣 05/24 22:44
AndrewShi: 嗎?! 05/24 22:44
andrew43: 當然啊。把100個人按身高分成三類,每類幾個人你不理 05/24 22:55
andrew43: 的話怎麼逼cdf 05/24 22:56
andrew43: 於是你只有A/B/C三類,沒別的東西了,如何畫cdf? 05/24 22:58
AndrewShi: 了解,權重的分配就是依據看A.B.C這三類的人數多寡去 05/24 23:21
AndrewShi: 分配對吧?! 05/24 23:21
AndrewShi: 所以andrew大所寫的程式碼所分配的權重就是依據每個區 05/24 23:28
AndrewShi: 間(10為一區間)所發生的次數去給它囉?! 05/24 23:28
andrew43: 對。例如0-10切一份,這份的數都當成是5,取中間的意思 05/24 23:38
AndrewShi: 了解,非常感謝andrew大,又讓我學到了不少 05/24 23:47