adding legend for multiple surface in same graph

23 次查看(过去 30 天)
Hi,
I am relatively new to Matlab. I have a figure (attached) which has two surfaces . I want to create legend for each surface. Any idea/suggestion how I can create legend for each surface? I have the attached the figure.
This is my code to create this graph
close all
clear variables
clc
test = xlsread('Matlabinput.xlsx', 'c2:f20');
x=test(:,1);
y=test(:,2);
z=test(:,3);
v=test(:,4);
xlin = linspace(min(x),max(x),13);
ylin = linspace(min(y),max(y),13);
[X,Y] = meshgrid(xlin,ylin);
f = scatteredInterpolant(x,y,z);
f2 = scatteredInterpolant(x,y,v);
Z = f(X,Y);
Z2 = f2(X,Y);
figure
mesh(X,Y,Z); %interpolated
axis tight ;
hold on;
surf( X, Y, Z, 'EdgeColor', 'black', 'FaceColor', [255,100,0]/255, 'FaceAlpha', .5 );
plot3(x,y,z,'.' );
axis tight;
mesh(X,Y,Z2) %interpolated
axis tight;
surf( X, Y, Z2, 'EdgeColor', 'black', 'FaceColor', [1,255,200]/255, 'FaceAlpha', .9);
plot3(x,y,v,'.' ) %nonuniform
%hold on
xlabel('h')
ylabel('s')
zlabel('tc')
alpha(0.5) %transparent
Thanks in advance.
Best,
Roni

采纳的回答

Walter Roberson
Walter Roberson 2015-9-22
Side note: you do not need surf() and then plot3(). You can use
surf( X, Y, Z, 'EdgeColor', 'black', 'FaceColor', [255,100,0]/255, 'FaceAlpha', .5, 'Marker', '.' );
To legend appropriately, you would use
h1 = surf( X, Y, Z, 'EdgeColor', 'black', 'FaceColor', [255,100,0]/255, 'FaceAlpha', .5, 'Marker', '.' );
and later
h2 = surf( X, Y, Z2, 'EdgeColor', 'black', 'FaceColor', [1,255,200]/255, 'FaceAlpha', .9, 'Marker', '.');
and then
legend([h1, h2], {'First Surface', 'Second Surface'});
  3 个评论
Kien Pham
Kien Pham 2018-11-14
Hi Walter, do you know of a way to turn off the facecolors altogether for the legend of multuple surface plots?
I set my FaceColor to 'interp,' and do not want a color to represent an interpolated range. I prefer to set the FaceColor of the boxes to a neutral white if possible. Let me know. Thanks.
Walter Roberson
Walter Roberson 2018-11-14
In cases where you want aa legend that does not match the automatic legend rules, it is often easier to create some dummy invisible graphics objects that have the properties that you would like to have show up, and legend those instead . Sometimes there are ways to get the desired outputs by changing properties after calling legend but it is not clear that it is worth the fight at times .

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Graphics Object Properties 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by