[R] cloud() works but wireframe() is blank
Larry Layne
ljlayne at unm.edu
Thu Oct 26 18:50:11 CEST 2006
--On Wednesday, October 25, 2006 4:46 PM -0700 Deepayan Sarkar
<deepayan.sarkar at gmail.com> wrote:
> On 10/25/06, Larry Layne <ljlayne at unm.edu> wrote:
>> Per the message from Alexander Nervedi, 29 April 2006:
>>
>> > I have to be making a riddiculously silly ommission.
>> > when I run the fillowing i get the cloud plot ok. But I cant figure
>> > out what I am missing out when I call wireframe.
>>
>> > Any help would be appreciated.
>>
>> > x<-runif(100)
>> > y<-rnorm(100)
>> > z<-runif(100)
>>
>> > temp <-data.frame(x,y,z)
>> > wireframe(x~y*z,temp)
>> > cloud(x~y*z,temp)
>>
>> There is something funny about the way wireframe treats a data frame
>> object created using "data.frame" vs. using "expand.grid". For instance,
>> this works:
>
> There's nothing funny about it, ?wireframe clearly says:
>
> In the case of 'wireframe',
> calculations are based on the assumption that the 'x' and 'y'
> values are evaluated on a rectangular grid defined by their
> unique values.
Sorry about incorrectly interpreting this part of the description about
wireframe.
> In the original example, the (x, y) values are clearly not on a grid,
> and in your (very strange) example below, they are not on a
> rectangular grid, as can be seen using
>
> xyplot(u ~ v, reggrid)
One of the nice things about posting questions in a list is that it is so
conveniently easy to embarrass oneself in public. The corrected code
follows and works just fine:
library(lattice)
###MAKE-BELIEVE DATA
u <- mat.or.vec(100,1)
v <- mat.or.vec(100,1)
ij=0
for(i in 1:10)
{
for(j in 1:10)
{
ij=ij+1
u[ij]=i
v[ij]=j
}
}
z <- runif(100)
reggrid <- data.frame(u,v,z)
is.data.frame(reggrid)
wireframe(z~u*v,reggrid,scales=list(arrows=FALSE),drape=TRUE,colorkey=TRUE)
>> In addition, I would also like to
>> do what Alexander is trying to do, which is create a wireframe from
>> irregular lattice data.
Although what I would really like to do is plot a 3D Triangulated Irregular
Network (TIN) surface of the irregularly spaced points, the following sort
of gets me there in the short-term:
##INTERPOLATE USING AKIMA PACKAGE AND PLOT SURFACES
library(akima)
library(lattice)
#MAKE-BELIEVE DATA
u <- runif(30)
v <- runif(30)
z <- runif(30)
#LINEAR INTERPOLATION
reggrid <- interp(u,v,z,linear=TRUE,extrap=FALSE)
#WIREFRAME SURFACE PLOT FROM INTERPOLATED DATA
wireframe(reggrid$z,scales=list(arrows=FALSE),drape=TRUE,colorkey=TRUE)
#PLOT IMAGE, CONTOUR, AND POINTS
plot(u,v)
image (reggrid,add=TRUE)
contour(reggrid,add=TRUE)
points (u,v,pch = 3)
Larry Layne
More information about the R-help
mailing list