R решетчатый каркас: как увеличить разрешение 3D графика

У меня есть вопрос, на который у меня нет ответа через некоторое время исследований.

temp.df<-subset(spread.df, x<5 & x>1 & y>1 & y<5)

wireframe((temp.df$z ~ temp.df$x + temp.df$y),
  scales=list(arrows=F), 
  screen = list(z = 40,x= -60) 
)

Если я запустил этот код, то оси x и y будут от 2 до 4 с одним промежуточным шагом, равным 3. Это делает график очень низким разрешением. Есть ли способ повысить разрешение, не манипулируя моим исходным набором данных? Под более высоким разрешением я подразумеваю подразделение поверхности каркаса.

Спасибо!

1 ответ

Решение

Хорошо, вот как вы можете интерполировать поверхность с akima пакет. По умолчанию это даст вам 40x40 сетку, основанную на существующей поверхности:

require(akima)
require(reshape2)

temp.df<-expand.grid(x=2:4,y=2:4,z=0)
temp.df$z<-rnorm(9,10,3)

surface<-melt(interp(temp.df$x,temp.df$y,temp.df$z)) # melt() stretches out the surface to x,y,z as you've put into the original example
flat<-surface[!is.na(surface$X1)&!is.na(surface$X2),] # drop the NAs

#CONVERT SCALES BACK (INTERP GIVES YOU A 40x40 grid over the existing range)

points<-data.frame(x=min(temp.df$x)+(flat$X1-1)/(40/diff(range(temp.df$x))),
                   y=min(temp.df$y)+(flat$X2-1)/(40/diff(range(temp.df$x))),
                   z=flat$value)

wireframe((points$z ~ points$x + points$y),
          scales=list(arrows=F), 
          screen = list(z = 40,x= -60) 
)

Другие вопросы по тегам