# Plot 4d surface from x, y, z, c data

269 views (last 30 days)

Show older comments

Carol
on 1 Nov 2013

Commented: Cosmin Constantin Popescu
on 22 Jan 2019

Hello,

I was wondering how to plot a 4d surface. I have x, y and z data (unevenly spaced), and c data (c is a function of x, y, z). I would like to plot c as a surface, with particular value of c being defined by a colour.

My x, y, z and c data are column vectors, but I don't think this is suitable for the surf(x, y, z, c) function.

Any help would be greatly appreciated.

Carol

##### 0 Comments

### Accepted Answer

### More Answers (2)

Simon Fluegge
on 12 Feb 2017

Edited: Walter Roberson
on 12 Feb 2017

I have the following data:

x=rand(1,5)

y=rand(1,10)

z=rand(1,13)

score=f(x,y,z)

I would like to plot a surface. The color of the surface is related to the score value. To each data pair of x and y I only want to plot the related z value which has the best score value.

##### 2 Comments

Cosmin Constantin Popescu
on 22 Jan 2019

Ryan
on 5 Aug 2014

If you want to plot a surface, you should be able to rearrange your z and c data into matrices so that they form a matrix, which would then make it suitable for the surf(x,y,z,c) function.

Example:

x = 1:10;

y = 11:20;

z = x'*y;

c = randi(10,10);

surf(x,y,z,c)

Column vectors would work well for using scatter3(x,y,z,s,c) (just use scalar s, e.g. 10) and this might be a good way to quickly visualize the data. The problem with having z as a column vector for a surface is Matlab doesn't know how they're supposed to line up, and which vertices to connect to form a continuous surface. You give it this information by passing z in as a rectangular matrix, and x and y as vectors with elements that define the lines on the surface in their respective domains.

Let us know whether your data can be shaped to fit this.

##### 4 Comments

### See Also

### Categories

### Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!