作者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://webptt.com/cn.aspx?n=bbs/R_Language/M.1558673077.A.F67.html
1F:推 andrew43: 可以贴一张你期待的图吗?外观类似即可。 05/24 14:16
3F:→ AndrewShi: andrew大~我如果把范围改成>=100就可以画的出来(下图 05/24 15:15
4F:→ AndrewShi: ),我在想可能是值过多的问题,不知道有没有什麽方法 05/24 15:15
5F:→ AndrewShi: 可以解决 05/24 15:15
7F:→ andrew43: 确实ram爆掉了。我觉得改成分组加权cdf来做应该就好了 05/24 16:02
9F:→ AndrewShi: 感谢andrew大,不过想请教你用wtd.Ecdf()如果像这样 05/24 18:08
10F:→ AndrewShi: 不分配权重给它是不是画出来就等於原本用ecdf()画出 05/24 18:08
11F:→ AndrewShi: 来是一样的,只是把所有的值做分组再画而已呢?! 05/24 18:08
12F:推 andrew43: 对,只不过会有一点失真,但切够细在图上看不出来 05/24 18:58
13F:推 andrew43: 等等,要权重才是喔 05/24 20:17
14F:→ AndrewShi: 什麽意思??是要分配权重才会等於用ecdf画出来的一样 05/24 22:44
15F:→ AndrewShi: 吗?! 05/24 22:44
16F:→ andrew43: 当然啊。把100个人按身高分成三类,每类几个人你不理 05/24 22:55
17F:→ andrew43: 的话怎麽逼cdf 05/24 22:56
18F:→ andrew43: 於是你只有A/B/C三类,没别的东西了,如何画cdf? 05/24 22:58
19F:→ AndrewShi: 了解,权重的分配就是依据看A.B.C这三类的人数多寡去 05/24 23:21
20F:→ AndrewShi: 分配对吧?! 05/24 23:21
21F:→ AndrewShi: 所以andrew大所写的程式码所分配的权重就是依据每个区 05/24 23:28
22F:→ AndrewShi: 间(10为一区间)所发生的次数去给它罗?! 05/24 23:28
23F:→ andrew43: 对。例如0-10切一份,这份的数都当成是5,取中间的意思 05/24 23:38
24F:→ AndrewShi: 了解,非常感谢andrew大,又让我学到了不少 05/24 23:47