По сути, разница в том, что используется линейный метод (который дает более читаемую картину моих данных), но вы не можете экстраполировать данные. Чтобы сделать это, вам нужен нелинейный метод, но визуализация не очень хорошо различает высокие и низкие значения, по крайней мере, для моего набора данных. Предположительно, это потому, что значения данных перегружены нелинейными значениями интерполяции (крайние значения становятся намного больше при нелинейных по сравнению с линейными методами).

я есть график, где экстраполяция не соответствует начальной интерполяции. Я хотел бы, чтобы тепловая карта заполнила все изображение.

Во-первых, код интерполяции:

library(akima)
library(reshape2)

xmin <- signif(min(CBLo2$MD1))
xmax <- signif(max(CBLo2$MD1))
ymin <- signif(min(CBLo2$MD2)) 
ymax <- signif(max(CBLo2$MD2))
gridint <- 100

fld <- with(CBLo2, interp(x = MD1, y = MD2, z = Abundance, 
            xo=seq(xmin, xmax, length=gridint), yo=seq(ymin, ymax, length=gridint) ))
df <- melt(fld$z, na.rm = TRUE)
names(df) <- c("MD1", "MD2", "Abundance")
df$MD1 <- fld$x[df$MD1]
df$MD2 <- fld$y[df$MD2]
contour(fld) # test plot

Я не буду публиковать весь код ggplot (используемый для приведенного ниже графика), только тот, который необходим для создания карты тепла:

ggplot() +
  geom_tile(inherit.aes=FALSE,data = df, aes(x = MD1, y = MD2,fill = Abundance)) +
  scale_fill_continuous(name = "Rain (mm)", low = "yellow", high = "green")

Однако, когда я пытаюсь экстраполировать данные (следующие примеры из других постов), я получаю следующий график, который вообще не соответствует первой лунке:

fld <- with(CBLo2, interp(x = MD1, y = MD2, z = Abundance, extrap=TRUE, linear=FALSE,
            xo=seq(xmin, xmax, length=gridint), yo=seq(ymin, ymax, length=gridint) ))

Вот данные:

Abundance   MD1 MD2
9   -0.59042    0.76793119
42  -0.48544284 -0.09465043
13  0.51250586  -0.24599322
84  -0.30857525 -0.21529624
2   0.90449257  0.679926
16  0.24536209  0.24016424
52  -0.43144002 -0.75474149
4   1.23830339  -0.11985391
37  -1.10235817 0.33886773
79  0.01757236  -0.59635386

Что я делаю неправильно? Как я могу сделать экстраполяцию более точной?

Ответы на вопрос(1)

Ваш ответ на вопрос