[問題] 選取資料特定區域作圖

作者: 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