How to avoid patch color being included in legend ?
Show older comments
I would like to know how to remove the patcharea being represented in legend. I have attached the code and outputs when patch command is included and not used. When patch is used to highlight a portion of plot its color is getting indicated rather than the linestyle and line color in legend. Also the thickening of xaxis and yaxis in upper and right side borders disappears when more than one patch command has used. This can be seen from the figure named patch. Please let me know how to fix this issue. Due to the limitation on number of pictures can be attached i have added the picture when patch command is used.
Edit: Through the usage of handles legend issue got solved. But the boder issue persists. Have a look at the picture named patch1 in comments.
clc;
clear all;
close all;
x = linspace(-10,10,200);
y = sin(4*x);
y1 = sin(x);
figure;
patch([2 5 5 2], [[1 1]*(-1) [1 1]*(1)], 'y', 'FaceAlpha',0.3, 'EdgeColor','none');
hold on
patch([-5 -2 -2 -5], [[1 1]*(-1) [1 1]*(1)], 'y', 'FaceAlpha',0.3, 'EdgeColor','none');
hold on
plot(x,y,'r');
hold on
plot(x,y1,'g');
hold off
grid on;
legend({'sin(4*x)','sin(x)'});

1 Comment
Star Strider
on 7 Aug 2020
set(gca, 'Box','on')
Accepted Answer
More Answers (2)
clc;
clear all;
close all;
x = linspace(-10,10,200);
y = sin(4*x);
y1 = sin(x);
figure;
hold on
patch([2 5 5 2], [[1 1]*(-1) [1 1]*(1)], 'y', 'FaceAlpha',0.3, 'EdgeColor','none');
patch([-5 -2 -2 -5], [[1 1]*(-1) [1 1]*(1)], 'y', 'FaceAlpha',0.3, 'EdgeColor','none');
h1 = plot(x,y,'r');
h2 = plot(x,y1,'g');
hold off
grid on;
legend([h1 h2],'sin(4*x)','sin(x)');

3 Comments
Arthur Roué
on 7 Aug 2020
Always too fast to answer ;)
Mahesh Babu Dhanekula
on 7 Aug 2020
Mahesh Babu Dhanekula
on 7 Aug 2020
Arthur Roué
on 7 Aug 2020
You need to explicit legend and object handle for each line / patch when calling legend function
hY = plot(x,y,'r');
hold on
hY1 = plot(x,y1,'g');
hold off
grid on;
legend([hY, hY1], {'sin(4*x)','sin(x)'});
4 Comments
Mahesh Babu Dhanekula
on 7 Aug 2020
Mahesh Babu Dhanekula
on 7 Aug 2020
Arthur Roué
on 7 Aug 2020
Switch 'Box' property of your axes to 'on' in order to display all borders
x = linspace(-10,10,200);
y = sin(4*x);
y1 = sin(x);
figure;
hAxe = axes(gcf, 'NextPlot', 'add', 'Box', 'on');
patch([2 5 5 2], [[1 1]*(-1) [1 1]*(1)], 'y', 'FaceAlpha',0.3, 'EdgeColor','none');
patch([-5 -2 -2 -5], [[1 1]*(-1) [1 1]*(1)], 'y', 'FaceAlpha',0.3, 'EdgeColor','none');
hY = plot(x,y,'r');
hY1 = plot(x,y1,'g');
grid on;
legend([hY, hY1], {'sin(4*x)','sin(x)'});
Mahesh Babu Dhanekula
on 7 Aug 2020
Categories
Find more on Graphics Object Properties in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!