Более

Как выполнить интерполяцию в пределах определенных границ деформированной сетки с помощью R?


Моя цель - создать карту интерполяции некоторых результатов выходной модели, которые отображаются на деформированной сетке (из численного моделирования). Результаты модели находятся в плоскости x-y (представляющей координаты) с переменной-z для интерполяции, однако координаты расположены неравномерно и имеют верхнюю границу, которую следует соблюдать.

Я могу изобразить именно то, что я использовал, используя программу Tecplot, однако я могу делать только одно изображение за раз. Использование Tecplot чрезвычайно утомительно, поэтому я хотел бы автоматизировать это в R. Вот что я хочу:

В настоящее время я использую приведенный ниже код в R, чтобы сделать то же самое, однако мои результаты не идеальны, и я хотел бы улучшить свой код R.

Вот ссылка на некоторые примеры данных: ссылка.

Вот мой код, который я использую в настоящее время, и неидеальный результат этого кода:

библиотека (акима) библиотека (ggplot2) библиотека (reshape2) файл <- "D: /MIN3P/NoGrowth/1a11/Russ2D_46.gsp" total = read.table (file, header = FALSE, skip = 3) data <-total [ , c (1,3,5)] names (data) <- c ("x", "y", "z") # интерполировать с akima inter <-interp (x = data $ x, y = data $ y , z = data $ z, xo = seq (min (data $ x), max (data $ x), length = 300), yo = seq (min (data $ y), max (data $ y), length = 100), extrap = FALSE) fill.contour (inter, xlim = c (50,150), ylim = c (5,17), color.palette = colorRampPalette (c ("Красный", "синий")), xlab = " Расстояние через реку ", ylab =" Высота ", main =" Давление ", key.title = title (main =" Давление (м) ", cex.main = 1)) # рисование с помощью таяния и ggplot df <- melt ( inter $ z, na.rm = TRUE) names (df) <- c ("x", "y", "z") df $ x <- inter $ x [df $ x] df $ y <- inter $ y [df $ y] ggplot (data = df, aes (x = x, y = y, z = z)) + geom_tile (aes (fill = z)) + stat_contour () + ggtitle ("Давление") + xlab («Расстояние через реку») + ylab («Высота») + scale_fill_continuous (name = «Давление (м)», low = «Red», high = «blue») + theme (plot.title = element_text (si ze = 25, face = "жирный"), legend.title = element_text (size = 15), axis.text = element_text (size = 15), axis.title.x = element_text (size = 20, vjust = -0,5) , axis.title.y = element_text (size = 20, vjust = 0.2), legend.text = element_text (size = 10))

Вот мои неидеальные результаты с пакетом Akima:

Вот мои неидеальные результаты с ggplot:

Как я могу создать изображение, подобное изображению из Tecplot, но используя R? Обратите внимание, что на графиках из ggplot и Akima верхняя граница полностью скрыта, и я хочу, чтобы эта особенность выделялась, а при интерполяции учитывалась форма верха, поскольку это очень важная особенность.