# Combining two surface plots

조회 수: 4(최근 30일)
turjdlawef 2021년 7월 30일
댓글: Walter Roberson 2021년 7월 30일
I'm trying to combine two surface plots in a single figure. The problem is that one of the two is plotted on the wrong axis. The reason is that:
surface1 = surf(x,y,z)
surface2 = surf(x,z,y)
This is due to the mathematical equations behind x,z and y. I can't change them, i.e. rearrange z in terms of y for surface2.
Is there a way to map the two to the correct axes?
##### 댓글 수: 2표시숨기기 이전 댓글 수: 1
turjdlawef 2021년 7월 30일
Sure, here's a screenshot:
The green one is rotated wrongly; this is because the z variable is p in this case, whilst for the yellow it is a. When
i.e.
yellow = surf(x,p,a), green = surf(x,a,p)
It seems to me that I can't change the order in surf because that means rearranging the underlying equations, which I can't do in this case. When I combine the two in a single figure, a and p are inverted. It's difficult to see graphically but I'm sure that that's the problem ... just don't know how to fix it :( This instead is what the correct blue surface should be:

댓글을 달려면 로그인하십시오.

### 채택된 답변

Walter Roberson 2021년 7월 30일
You can
ax = gca;
yellow = surf(ax, x, p, a);
hold(ax, 'on')
M = [1 0 0 1; 0 0 1 0; 0 1 0 0; 0 0 0 0];
hg = hgtransform(ax, 'Matrix', M);
green = surf(hg, x, a, p);
hold(ax, 'off')
xlim(ax, 'auto'); ylim(ax, 'auto'); zlim(ax, 'auto');
##### 댓글 수: 5표시숨기기 이전 댓글 수: 4
Walter Roberson 2021년 7월 30일
In order for green = surf(hg, x, a, p); to work, then:
• if x is a vector, then length(x) == size(p,2) -- columns not rows
• if x is an array, then size(x) == size(p)
• if a is a vector, then length(a) == size(p,1) -- rows not columns
• if a is an array, then size(a) == size(p)
It is not an error to use an array for x by a vector for a, or a vector for x but an array for a, or a vector for both or an array for both -- but they have to match the appropriate dimension of p.

댓글을 달려면 로그인하십시오.

R2021a

### Community Treasure Hunt

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

Start Hunting!

Translated by