作者AndrewShi (沒有妳的我)
看板R_Language
標題[問題] 畫累積分布函數(CDF)圖的問題
時間Fri May 24 12:44:35 2019
[問題類型]:
程式諮詢(我想用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: andrew大~我如果把範圍改成>=100就可以畫的出來(下圖 05/24 15:15
→ AndrewShi: ),我在想可能是值過多的問題,不知道有沒有什麼方法 05/24 15:15
→ AndrewShi: 可以解決 05/24 15:15
→ andrew43: 確實ram爆掉了。我覺得改成分組加權cdf來做應該就好了 05/24 16:02
→ 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