2013-12-02 2 views
1

У меня есть вопрос, на который у меня нет ответа после некоторого времени исследования.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) 
) 

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

Спасибо!

+0

сколько строк вы имеете в temp.df? – Troy

+0

@Troy У меня есть 9 строк в temp.df после подмножества данных. График выглядит очень грубым из-за низкого количества точек данных. – lulumink

+0

Итак, вы в основном просите функцию интерполяции 2D. Вот один из них: 'akima :: interp' –

ответ

3

OK Вот как вы можете интерполировать поверхность с помощью пакета 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) 
) 

enter image description here

+0

Просто обещайте, что вам не нужен мой комментарий выше, чтобы получить этот ответ :-) –

+0

То же самое подумал в то же время, я думаю! – Troy

+0

вы, ребята, потрясающие! Большое спасибо за работу! точек $ z ~ точек $ x + точек $ y, есть ли лучший регрессивный подход, чем здесь? Я знаю, что я тоже использовал этот, но мне просто интересно, есть ли другой, который может лучше представлять данные. – lulumink

Смежные вопросы