Skip to content

how to plot two surfaces with lattice::wireframe

5 messages · Eik Vettorazzi, Carl Witthoft, Deepayan Sarkar

#
Hi all,
I'd like to plot the Real and Imaginary parts of some f(z) as two 
different surfaces in wireframe (the row/column axes are the real and 
imag axes).  I know I can do it by, roughly speaking, something like

plotz <- expand.grid(x={range of Re(z)}, y={range of Im(z), groups=1:2)
plotz$func<-c(Re(f(z),Im(f(z))
wireframe(func~x*y,data=plotz,groups=groups)

But that seems like a clunky way to go, especially if I happen to have 
started out with a nice matrix of the f(z) values.

So, is there some simpler way to write the formula in wireframe?  I 
envision, for a matrix of complex values zmat,  pseudocode:

wireframe(c(Re(zmat),Im(zmat), groups=1:2)

  -- and yes, I'm fully aware that without a connection between the 
'groups' variable and zmat, this won't work as written.

All suggestions (including "read the help file for {some lattice func I 
didn't know about} ) greatfully accepted.

Carl
#
Hi Carl,
I have no idea what z or f(z) are, but maybe outer will help you:

wireframe(outer(seq(0,5,length.out=50),seq(2,4,length.out=40),function(x,y)sin(x*y)))

cheers.

Am 13.10.2011 23:37, schrieb Carl Witthoft:

  
    
#
No, the point of my question is how to plot the Re and Im parts as two 
separate surfaces in one chart.
On 10/14/11 5:46 AM, Eik Vettorazzi wrote:

  
    
1 day later
#
On Fri, Oct 14, 2011 at 3:07 AM, Carl Witthoft <carl at witthoft.com> wrote:
This is reasonably simple:

fz <- matrix(complex(real = 1:100, imaginary = 101:200), 10, 10)

zr <- as.vector(row(fz))
zc <- as.vector(row(fz))
wireframe(Re(fz) + Im(fz) ~ zr + zc)

The as.vector() are needed because matrix x and y in the formula have
a special meaning.

-Deepayan
#
Thank you!  That bit about "Re(z) + Im(z)" was what I missed.

Carl
On 10/15/11 12:00 PM, Deepayan Sarkar wrote: