728x90
호도그래프
대기 중의 풍향과 풍속의 수직 분포를 시각적으로 나타내는 도구
극 좌표계 사용.
원점에서 높이에 따른 방향과 속도를 기반으로 풍향을 매핑.
목적: 호도그래프를 통해 악기상 구조와 진화를 예측하는 데 중요한 요소인 특정 깊이에서의 수직 풍향 전단의 총 크기를 파악할 수 있다.
호도그래프를 작성하는 과정
풍향 벡터 플롯: 각 높이에서의 풍향과 풍속을 벡터로 표현하고, 이를 극 좌표 차트에 플롯한다. 이때, 벡터의 길이는 풍속을, 방향은 풍향을 나타낸다.
벡터 연결: 각 높이에서의 풍향 벡터의 끝점을 연결하여 호도그래프를 생성합니다. 이렇게 하면, 높이에 따른 풍향과 풍속의 변화를 한 눈에 파악할 수 있다.
높이 또는 압력 레벨 표시: 각 풍향 벡터의 끝에 적절한 높이 또는 기압을 표시합니다. 이를 통해 각 높이에서의 풍향과 풍속을 알 수 있다.
호도그래프 그리는 R코드
hodograph <- function (x, y, t, rings, ringlabels = TRUE, tcut = c ("daily", "yearly"), ...) {
tcut <- match.arg (tcut)
if (missing (t)) {
stop ("x-y method not coded yet\\n")
} else {
if (!missing (y)) {
stop ("cannot give y if t is given\\n")
}
if (tcut == "yearly") {
t <- as.POSIXlt (t)
start <- ISOdatetime (1900 + as.POSIXlt (t [1])$year, 1, 1, 0, 0, 0, tz = attr (t, "tzone"))
day <- as.numeric (julian (t, origin = start))
xx <- x * cos (day/365 * 2 * pi)
yy <- x * sin (day/365 * 2 * pi)
if (missing (rings)) rings <- pretty (sqrt (xx^2 + yy^2))
rscale <- 1.04 * max (rings)
theta <- seq (0, 2 * pi, length.out = 200)
plot (xx, yy, asp = 1, xlim = rscale * c (-1.1, 1.1), ylim = rscale * c (-1.1, 1.1), type = "n", xlab = "", ylab = "", axes = FALSE)
month <- c ("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec")
day <- c (31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)
rscale <- max (rings)
for (m in 1:12) {
phi <- 2 * pi * (sum (day [1:m]) - day [1])/sum (day)
lines (rscale * 1.1 * cos (phi) * c (0, 1), rscale * 1.1 * sin (phi) * c (0, 1), col = "gray")
phi <- 2 * pi * (0.5/12 + (m - 1)/12)
text (1.15 * rscale * cos (phi), 1.15 * rscale * sin (phi), month [m])
}
for (r in rings) {
if (r > 0) {
gx <- r * cos (theta)
gy <- r * sin (theta)
lines (gx, gy, col = "gray")
if (ringlabels) text (gx [1], 0, format (r))
}
}
points (xx, yy, ...)
} else {
stop ("only tcut=\"yearly\" works at this time\\n")
}
}
}
728x90