현재 기후 변수 4 개에 대한 시뮬레이션 된 집수 흐름의 응답을보고 있습니다 : T, RH, Rs 및 uz. 나는 루피의 범위의 서로 다른 조합 및 조건으로 즉 T 플로우의 응답 및 RS 우스, 변수의 두 T 및 RS 내 흐름에 대한 몇 가지 '응답 표면'을 구축하고 싶습니다 RH 및 uz.여러 채워진. 컨투어 플롯을 다양한 레벨의 컨디셔닝 변수로 결합하십시오.
그러나 격자에 2 개의 조건 변수를 사용하여 표면을 구성 할 수있는 기능이 없거나 잘못 입력 한 것처럼 보입니다. 예를 들어 나는 levelplot을 (시도) 그러나 그것은 나에게 빈 플롯했다 :
그래서# Separate input variables and define range intervals for plotting
deltaT <- as.matrix(x$X$X1)
deltaRH <- as.matrix(x$X$X2)
deltaRs <- as.matrix(x$X$X3)
deltauz <- as.matrix(x$X$X4)
responseQave <- as.matrix(t(yPenman)[,11])
# Use 2 intervals for each conditioning variable with 10% overlap
deltaRHint <- equal.count(deltaRH,number=2,overlap=.1)
deltauzint <- equal.count(deltauz,number=2,overlap=.1)
levelplot(responseQave ~ deltaT * deltaRs | deltaRHint * deltauzint, zlim = c(-20,20),cuts=10, col.regions = colorRampPalette(c("red", "white", "blue")))
내가 수동 루피의 범위를 나누어 간격으로 UZ 및 위해 표면을 구성 filled.contour를 사용하려고 시도를 Rs와 uz의 간격의 각 조합.
그리고 여기에 내가 개발 한 코드 - 길이 미안 난 아직도 내 코딩 기술을 개발하고 있어요 같이
# Extract the boundaries of intervals for each conditioning variable
deltaRHI <- as.matrix(levels(deltaRHint))
deltaRHI <- c(deltaRHI[[1]][1],deltaRHI[[1]][2],deltaRHI[[2]][1],deltaRHI[[2]][2])
deltauzI <- as.matrix(levels(deltauzint))
deltauzI <- c(deltauzI[[1]][1],deltauzI[[1]][2],deltauzI[[2]][1],deltauzI[[2]][2])
# response to T and Rs
# first combination of RH and uz - interpolate irregular data using akima
grid111 <- interp(x = deltaT[deltaRH>deltaRHI[1] & deltaRH<deltaRHI[2] & deltauz>deltauzI[2]],
y = deltaRs[deltaRH>deltaRHI[1] & deltaRH<deltaRHI[2] & deltauz>deltauzI[2]],
z = responseQave[deltaRH>deltaRHI[1] & deltaRH<deltaRHI[2]& deltauz>deltauzI[2]],
duplicate="strip")
filled.contour(x = grid111$x,
y = grid111$y,
z = grid111$z,
xlim = c(0,8), ylim = c(-10,10), zlim = c(-20,20),
levels = c(seq(-20,20,by = 1)),
color.palette = colorRampPalette(c("red", "white", "blue")))
# second combination of RH and uz
grid222 <- interp(x = deltaT[deltaRH>deltaRHI[2] & deltauz>deltauzI[2]],
y = deltaRs[deltaRH>deltaRHI[2] & deltauz>deltauzI[2]],
z = responseQave[deltaRH>deltaRHI[2]& deltauz>deltauzI[2]],
duplicate="strip")
filled.contour(x = grid222$x,
y = grid222$y,
z = grid222$z,
xlim = c(0,8), ylim = c(-10,10), zlim = c(-20,20),
levels = c(seq(-20,20,by = 1)),
color.palette =
colorRampPalette(c("red", "white", "blue")))
# third combination of RH and uz
grid333 <- interp(x = deltaT[deltaRH>deltaRHI[1] & deltaRH<deltaRHI[2] & deltauz>deltauzI[1] & deltauz<deltauzI[2]],
y = deltaRs[deltaRH>deltaRHI[1] & deltaRH<deltaRHI[2] & deltauz>deltauzI[1] & deltauz<deltauzI[2]],
z = responseQave[deltaRH>deltaRHI[1] & deltaRH<deltaRHI[2]& deltauz>deltauzI[1] & deltauz<deltauzI[2]],
duplicate="strip")
filled.contour(x = grid333$x,
y = grid333$y,
z = grid333$z,
xlim = c(0,8), ylim = c(-10,10), zlim = c(-20,20),
levels = c(seq(-20,20,by = 1)),
color.palette =
colorRampPalette(c("red", "white", "blue")))
# fourth combination of RH and uz
grid444 <- interp(x = deltaT[deltaRH>deltaRHI[2] & deltauz>deltauzI[1] & deltauz<deltauzI[2]],
y = deltaRs[deltaRH>deltaRHI[2] & deltauz>deltauzI[1] & deltauz<deltauzI[2]],
z = responseQave[deltaRH>deltaRHI[2]& deltauz>deltauzI[1] & deltauz<deltauzI[2]],
duplicate="strip")
filled.contour(x = grid444$x,
y = grid444$y,
z = grid444$z,
xlim = c(0,8), ylim = c(-10,10), zlim = c(-20,20),
levels = c(seq(-20,20,by = 1)),
color.palette =
colorRampPalette(c("red", "white", "blue")))
그리고이 나에게 아래와 같이하지만,에 바없이 좋은 개별 표면 플롯을 제공하는 것 당신이 격자 사용하여 생성 표준 표면 플롯의 패널에서 보는 것과 같은 정상은 (조절 변수의 수준을 나타냅니다 -. 그래서 조절 변수를 보여주는이 막대를 함께 결합하는 투쟁과 함께하고
어떤 도움 대단히 감사하겠습니다! :)
안녕하세요. BondedDust, (내 데이터 세트가 너무 커서 사용했던 임의의 숫자가 문제가되지 않습니다.) 시연 해 주셔서 감사합니다. 그러나 나는 상호 작용이 내 컴퓨터에서 엄청난 양의 메모리를 차지하고 있음을 발견했다. 내 데이터 세트가 크기 때문에 ... – user3643120