У меня есть несколько точек в единичном круге в 2D. Точки (красный, зеленый) исходят из одного из двух классов.двунаправленная меж- и экстраполяция для создания тепловой карты, которая заполняет круг
library(plotrix)
# draw points within circle
n <- 100
d <- data.frame(x= rnorm(n),
y= rnorm(n))
d <- d[sqrt(d$x^2 + d$y^2) < 1, ]
d$value <- ifelse(d$x > 0, 2, 3)
plot(d$x, d$y, xlim=c(-1,1), ylim=c(-1,1), pch=16, asp=1, col=d$value)
draw.circle(0,0,1)
Теперь я хочу, чтобы перекрывать участок с гладкой тепловой карты с указанием региона для каждой группы.
library(akima)
library(scales)
# estimate surface
nxy <- 100
xyo <- seq(-1, 1, len=nxy)
int <- interp(x = d$x, y = d$y, z = d$value,
extrap = T,
xo = xyo, yo = xyo,
nx = nxy, ny=nxy,
linear = T)
colors <- alpha(colorRampPalette(c("red", "yellow", "green"))(40) , .4)
image(xyo, xyo, int$z, add = T, col = colors)
До сих пор так хорошо. Моя проблема заключается в том, чтобы найти способ экстраполяции карты тепла к краям круга, чтобы она заполнила весь круг. Существует аргумент extrap
. В документах говорится: logical flag: should extrapolation be used outside of the convex hull determined by the data points?
. Я установил его на TRUE
, однако это, похоже, не работает.
Любые идеи, как оценить гладкую поверхность, покрывающую весь круг?
'packageVersion ("Аким")'? –
'akima' Версия 0.6-2 –
Хорошо, я нашел причину в деталях:' Никакой экстраполяции не может быть выполнено для линейного случая. 'Ну, лучше RTFM :) –