Re: ListPlot vs ListPlot3D
- To: mathgroup at smc.vnet.net
- Subject: [mg28906] Re: ListPlot vs ListPlot3D
- From: "Allan Hayes" <hay at haystack.demon.co.uk>
- Date: Fri, 18 May 2001 01:13:09 -0400 (EDT)
- References: <9e02ft$2vu@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
Otto,
The options MeshRange works if the array is evenly spaced.
data= Table[{x,y,x^2+y^2},{x,-4,4},{y,-5,7}];
Extract array of z values
dataz =data/.{__,z_?NumberQ}->z
Get the x and y ranges
mr={Min[#],Max[#]}&/@{data[[All,All,1]],data[[All,All,2]]};
Use ListPlot3D with MeshRange ->mr;
ListPlot3D[dataz, MeshRange->mr];
If we have an uneven rectangular grid we can make an interpolation function
for data and plot that: for example
fn=Interpolation[Flatten[data,1],InterpolationOrder\[Rule]1]
InterpolatingFunction[{{-4,4},{-5,7}},<>]
Plot3D[fn[x,y],{x,-4,4},{y,-5,7}]
If the points are not on a rectangular grid then the function
TriangularSurfacePlot
from the standard add-on
<<DiscreteMath`ComputationalGeometry`
can be used.
--
Allan
---------------------
Allan Hayes
Mathematica Training and Consulting
Leicester UK
www.haystack.demon.co.uk
hay at haystack.demon.co.uk
Voice: +44 (0)116 271 4198
Fax: +44 (0)870 164 0565
"Otto Linsuain" <linsuain+ at andrew.cmu.edu> wrote in message
news:9e02ft$2vu at smc.vnet.net...
>
> Dear Mathematica experts, I was wondering if there is a way of plotting
> a 3D graph using a rectangular array of z-values USING THE CORRESPONDING
> VALUES OF X AND Y.
>
> Here is what I mean:
>
> with a 2D plot, one can do:
>
> ListPlot[ {y1,y2,y3,.........yn} ] and this will give a graph of the
points
>
> {y1,1} ,{y2,2}, {y3,3},....{yn,n}, i.e. it will use the integers
> 1,2,3,...n as the x values.
>
> One can, however, write
>
> ListPlot[ { {x1,y1}, {x2,y2}, {x3,y3}, ... {xn,yn} }]
>
> and get a graph with user-specified values for x and y.
>
> There doesn't seem to be an analogous thing for ListPlot3D. The values
> of x and y seem to be always {1,1}, {1,2},{2,1},{2,2},.......{n,n}
>
> Any ideas? Thanks in advance. Otto Linsuain.
>