## How do I create a 3 dimensional response surface plot from X Y Z points ?

### ferdi bayram (view profile)

on 17 Nov 2019 at 22:56
Latest activity Commented on by ferdi bayram

### ferdi bayram (view profile)

on 18 Nov 2019 at 19:28

### Akira Agata (view profile)

Hi all,
I am struggling a bit here, and hope somebody could help. I have a set of X Y and Z points and Z is not found by any function of X and Y. In other words, I have independent X Y and Z values and these values are;
X Y Z
288 2.79 7.55
318 4.64 14.28
127 2.31 8.31
132 7.16 17.27
264 2.31 4.32
200 2.60 6.74
268 3.06 15.12
I need to create a response surface plot (contour plot) from these values. I would be so glad and thankful if somebody could help with with that. I am sorry if question is not very clear. If not, I can ask in detail. In sort, I have eight X Y Z independent data and want to create a response surface.
Best Regards,
Ferdi

Shubham Gupta

### Shubham Gupta (view profile)

on 18 Nov 2019 at 3:14
To create a response surface plot, you have to provide Z as a matrix.
Specifically, if two vector arguments X & Y defined such that length(X) = n and length(Y) = m then, size(Z) should be [m,n]. In order to plot the vertices of the surface patches as the triples (X(j), Y(i), Z(i,j)).
You have provided X,Y & Z as vector and if want 3d plot for that you can use
plot3(X,Y,Z)
but I believe that's not what you want.
Question: What kind of plot are you expecting? if you can provide hand drawing or pictures that would be very helpful, right now it's unclear the kind of plot you are expecting with this data.
ferdi bayram

### ferdi bayram (view profile)

on 18 Nov 2019 at 5:28
Hi Shubham,
First of all, thank you for trying to help me. Let me upload a couple of figures to clarify what I want. Since I do not know matlab deeply, I am not sure whether it is something I would be done
ferdi bayram

### ferdi bayram (view profile)

on 18 Nov 2019 at 5:34
Here is what exactl what I want and I have done t in minitab program. The problem in here is that there is no scale bar and it is not colorful (red blue yellow to show critical points). That is why I am trying to solve this problem via matlab

### Akira Agata (view profile)

on 18 Nov 2019 at 3:54

How about using an interpolation? The following is a simple example:
% Apply cubic interpolation
[xGrid,yGrid] = meshgrid(linspace(min(X),max(X)),linspace(min(Y),max(Y)));
zGrid = griddata(X(:),Y(:),Z(:),xGrid(:),yGrid(:),'cubic');
zGrid = reshape(zGrid,size(xGrid));
% Visualize the result
figure
contour(xGrid,yGrid,zGrid,'ShowText','on')
hold on
scatter(X,Y,'ro')
grid on
colorbar ferdi bayram

### ferdi bayram (view profile)

on 18 Nov 2019 at 6:59
Hi Akira, It looks really nice and fancy but since I am not good at matlab that much, could you please write the whole code that I can use ? My data is in the question. I would be so glad If you could write that.
Best regards
Akira Agata

### Akira Agata (view profile)

on 18 Nov 2019 at 7:46
D = [288 2.79 7.55;
318 4.64 14.28;
127 2.31 8.31;
132 7.16 17.27;
264 2.31 4.32;
200 2.60 6.74;
268 3.06 15.12];
X = D(:,1);
Y = D(:,2);
Z = D(:,3);
% Create 100x100 grid mesh (x,y) points
[xGrid,yGrid] = meshgrid(linspace(min(X),max(X)),linspace(min(Y),max(Y)));
% Interpolation
zGrid = griddata(X(:),Y(:),Z(:),xGrid(:),yGrid(:),'cubic');
zGrid = reshape(zGrid,size(xGrid));
% Fig.1 Contour plot with original data points
figure
contour(xGrid,yGrid,zGrid,'ShowText','on')
hold on
scatter(X,Y,'ro')
grid on
colorbar
% Fig.2 Surf plot
figure
surf(xGrid,yGrid,zGrid)
colormap(jet)
colorbar
ferdi bayram

### ferdi bayram (view profile)

on 18 Nov 2019 at 19:28
Thank you very much Akira, it worked :)