[问题] 选取资料特定区域作图

楼主: AndrewShi (没有妳的我)   2018-11-08 16:08:11
[问题类型]:
程式咨询(我想用R 做某件事情,但是我不知道要怎么用R 写出来)
[软件熟悉度]:
入门(写过其他程式,只是对语法不熟悉)
[问题叙述]:
这笔资料为2010年全球的降雨资料,资料可从这里取得:http://0rz.tw/JI056,下面的程
式码是已经取特定的经纬度范围(东亚)做月平均的降雨计算所画出来的图,我想请教的是
要怎么做才能画出经纬度范围只有东亚这块(也就是把旁边地图空白的部分都去除)??
我试过改image的经纬度范围,但是会出现变量(precip1)的长度不等于经度乘上纬度的错
误讯息,而把变量(precip1)的长度设成跟经纬度一样或是在计算月平均时就放进跟选取
特定经纬度的范围一样大的矩阵里也不行,还是一开始在读降雨这个变量时就只读进特定
的区域也不行,下面加上#号的程式码是我上述试的方法,如果这些方法是有可行的,只
是程式码写的不对,还烦请各位大大给予指点,谢谢。
[程式范例]:
rm(list=ls())
library(ncdf4)
library(data.table)
TRMM_data <- "C:\\Users\\TOM\\Desktop\\R(数据库)\\TRMM资料\\trmm_2010.nc"
obs <- nc_open(TRMM_data)
print(obs)
lon <- ncvar_get(obs,"lon")
nlon <- dim(lon)
lat <- ncvar_get(obs,"lat",verbose = F)
nlat <- dim(lat)
#lon <- seq(60,150,by=0.25)
#lat <- seq(-15,60,by=0.25)
time <- ncvar_get(obs,"time")
tunits <- ncatt_get(obs, "time", "units")
precip <- ncvar_get(obs,"r")
#precip <- ncvar_get(obs,"r",start=c(240,140,1),count=c(361,261,365))
nc_close(obs)
time <- as.Date(time / 24, format = "%Y-%m-%d", origin = "2010-01-01")
#precip1 <- matrix(NA_real_,361,261)
precip1 <- matrix(NA_real_,1440,400)
for(i in c(240:600)){
for(j in c(140:400)){
precip1[i,j] <- mean(precip[i,j,time=(1:31)])
}
}
library(sp)
library(RColorBrewer)
library(maps)
#lon <- seq(60,150,by=0.25)
#lat <- seq(-15,60,by=0.25)
#nlon <- 361L
#nlat <- 261L
image(lon,lat,precip1,col=rev(brewer.pal(10,"RdBu")))
#image(lon=c(60,150),lat=c(-15,60),precip1,col=rev(brewer.pal(10,"RdBu")))
#precip2 <- matrix(precip1,ncol=length(lat),nrow=length(lon),byrow=F)
#image(lon,lat,precip2,col=rev(brewer.pal(10,"RdBu")))
map(database='world2',add= TRUE)
#map(database='world2',xlim=c(60,150),ylim=c(-15,60),add= TRUE)
[环境叙述]:
https://imgur.com/a/RW1YjV0
[关键字]:
画图 特定区域 nc档
作者: andrew43 (讨厌有好心推文后删文者)   2018-11-08 16:43:00
看一下image()中xlim和ylim这二个参数怎么用简单来说,你不用预先为了特定区域而改变计算任何code只要限制image()的xlim和ylim就好了。或许再加上asp=1。
楼主: AndrewShi (没有妳的我)   2018-11-08 18:35:00
andrew大~好像画不出来,画出来是下图这样子,且有等了超过10分钟,图还是这样(空白)。https://imgur.com/pzSSKip
作者: andrew43 (讨厌有好心推文后删文者)   2018-11-08 18:39:00
我在image()中加了xlim和ylim后,直到map()都一切正常
楼主: AndrewShi (没有妳的我)   2018-11-08 18:41:00
阿...我知道了,lon和lat不能删掉,xlim和ylim加在后面就好,谢谢andrew大^^

Links booklink

Contact Us: admin [ a t ] ucptt.com