Add header to legend columns

Hello everyone,
I'd like to add a header to each column of a legend, which I manually did by calling the legend function with the parameter ('Box','off') and adding a rectangle around the legend as well as a text box containing the headers in bold (see attached file). Unfortunately, the grid can be seen through the legend by this method. How can I achive a better looking result without the grid lines in the rectangle?
Thanks for your help!

댓글 수: 7

Dyuman Joshi
Dyuman Joshi 2023년 2월 7일
You can decrease the font-size of legend or change xticks/yticks.
Or do you want the Legend box to show above the grid in an opaque manner?
dj1du
dj1du 2023년 2월 7일
The solution in an opaque manner could be working out for me perhaps, how can I do this?
Mathieu NOE
Mathieu NOE 2023년 2월 7일
have you looked on the file exchange ? there are improved legend submissions that can do what you are loocking for
Dyuman Joshi
Dyuman Joshi 2023년 2월 16일
편집: Dyuman Joshi 2023년 2월 16일
Does this work for you?
x = 0:0.01:10;
s=sin(x);
c=cos(x);
plot(x,s,x,c,x,s+c,x,s.*c,x,s-c,x,c-s)
grid on
ylim([-2.5 3.5])
l=legend({'sin', 'cos', 'sin+cos', 'sin*cos', 'sin-cos', 'cos-sin'}, 'Location', 'NorthWest', 'NumColumns', 2);
t=title(l,'plate: cylinder: ');
dj1du
dj1du 2023년 2월 16일
This is almost perfect, but is there any way to hide/remove the line separating header and legend?
Use:
legend('box', 'off') % Get rid off the box and line
There doesn't seem any way to remove that particular line.
The only other way seems to be, is that you draw two white lines and name their legend 'plate:' and 'cylinder:' to get what you want. Even in that case, alignment will be different.
x = 0:0.01:10;
s=sin(x);
c=cos(x);
plot(x,x*0,'w',x,s,x,c,x,s+c,x,x*0,'w',x,s.*c,x,s-c,x,c-s)
grid on
ylim([-2.5 3.5])
l=legend({'plate:', 'sin', 'cos', 'sin+cos', 'cylinder:','sin*cos', 'sin-cos', 'cos-sin'}, 'Location', 'NorthWest', 'NumColumns', 2);
%t=title(l,'plate: cylinder: ');

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

답변 (1개)

Raghvi
Raghvi 2023년 2월 16일

0 개 추천

Hey,
Although it doesn’t create the desired spacing, you can try out the following piece of code:
lgd = legend({'1->2','3->4','1->2','3->4'},...
'Location','northwest','NumColumns',2);
title(lgd,['plate: ' 'cylinder:'])
Alternatively, you can work around by using two different legends for the different lines all together and provide them both with a separate title using the title function.
Refer to the following MATLAB Answer to understand how to do so:

카테고리

태그

질문:

2023년 2월 7일

댓글:

2023년 2월 16일

Community Treasure Hunt

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

Start Hunting!

Translated by