Več

Kako interpolirati znotraj definiranih meja deformirane mreže z uporabo R?

Kako interpolirati znotraj definiranih meja deformirane mreže z uporabo R?


Moj cilj je ustvariti interpolacijski zemljevid nekaterih rezultatov izhodnega modela, ki so preslikani na deformirano mrežo (iz numerične simulacije). Rezultati modela so v ravnini x-y (ki predstavlja koordinate) s spremenljivko-z za interpolacijo, vendar so koordinate nepravilno razporejene in imajo zgornjo mejo, ki jo je treba upoštevati.

Lahko narišem točno tisto, kar sem uporabljal s programom, imenovanim Tecplot, vendar lahko naenkrat naredim samo eno sliko. Uporaba Tecplota je zelo dolgočasna, zato bi to rad avtomatiziral v R. Tukaj želim:

Trenutno uporabljam to kodo spodaj v R za isto stvar, vendar so moji rezultati manj kot idealni in rad bi izboljšal svojo kodo R.

Tukaj je povezava do nekaterih primerov podatkov: povezava.

Tukaj je moja koda, ki jo trenutno uporabljam, in neidealni izhod te kode:

library (akima) library (ggplot2) library (reshape2) file <-"D: /MIN3P/NoGrowth/1a11/Russ2D_46.gsp" skupaj = read.table (datoteka, glava = FALSE, preskoči = 3) podatki <-skupaj [ , c (1,3,5)] imena (podatki) <-c ("x", "y", "z") #interpoliraj z akima inter <-interp (x = podatki $ x, y = podatki $ y , z = podatki $ z, xo = seq (min (podatki $ x), max (podatki $ x), dolžina = 300), yo = seq (min (podatki $ y), max (podatki $ y), dolžina = 100), extrap = FALSE) fill.contour (inter, xlim = c (50,150), ylim = c (5,17), color.palette = colorRampPalette (c ("rdeča", "modra")), xlab = " Razdalja čez reko ", ylab =" Nadmorska višina ", main =" Tlak ", key.title = title (main =" Tlak (m) ", cex.main = 1)) #konturiranje z talino in ggplot df <- talina ( inter $ z, na.rm = TRUE) imena (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 ("Tlak") + xlab ("Razdalja čez reko") + ylab ("Nadmorska višina") + obseg_polnila_kontinuirano (name = "Tlak (m)", nizko = "Rdeče", visoko = "modro") + tema (plot.title = element_text (si ze = 25, obraz = "krepko"), legend.title = element_text (velikost = 15), axis.text = element_text (velikost = 15), axis.title.x = element_text (velikost = 20, vjust = -0,5) , axis.title.y = element_text (velikost = 20, vjust = 0,2), legend.text = element_tekst (velikost = 10))

Tu so moji neidealni rezultati s paketom Akima:

Tu so moji neidealni rezultati z ggplot:

Kako lahko ustvarim sliko, podobno tisti iz Tecplota, vendar z uporabo R? Upoštevajte, da je na ploskvah iz ggplot in iz Akime oblika zgornje meje popolnoma zatemnjena in želim, da ta lastnost izstopa ter da interpolacija spoštuje obliko vrha, saj je zelo pomembna značilnost.