Multiple lines for a single legend entry

114 Ansichten (letzte 30 Tage)
Szilard Novoth
Szilard Novoth am 5 Mai 2020
Bearbeitet: Szilard Novoth am 6 Sep. 2021
Hi!
I was wondering if it is possible to add a single legend for multiple lines, like here:
Thank you in advance!
  1 Kommentar
darova
darova am 5 Mai 2020
I think it's impossible. One object - one legend

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

David Neussl
David Neussl am 3 Sep. 2021
Hi, i think i may have a solution for your problem. My approach was to "plot" invisible NaNs, give them the color i want and create legend entries for those NaNs.
For example: Lets say we have 6 lines (10 data points each), where the first 3 are of GROUP 1 and the last three are of GROUP 2:
data = rand(10,6);
cm = colormap('lines'); % Get default line colors
figure, hold on;
for i = 1:6
% Get index for line colors (GROUP1=1:3, GROUP2=4:6)
if i <= 3
colorindex = 1;
else
colorindex = 2;
end
% Turn HandleVisibility off to disable legend entries for these lines
plot(data(:,i), 'Color', cm(colorindex,:), 'HandleVisibility', 'off');
end
% These nans will be invisible
plot(NaN, 'DisplayName', 'GROUP 1', 'Color', cm(1,:));
plot(NaN, 'DisplayName', 'GROUP 2', 'Color', cm(2,:));
% Show legend
legend('Location', 'Best');
This then gives this plot as a result
  1 Kommentar
Szilard Novoth
Szilard Novoth am 6 Sep. 2021
Bearbeitet: Szilard Novoth am 6 Sep. 2021
That is a clever workaround, thank you :)
The perfect solution would be, if I could give a single legend for two (or more) different lines.
For example you have 3 red lines, but maybe I want to differentiate these lines by having one dashed and another one dotted, but still only have the legend GROUP 1
Like:
red ‘-‘, ‘:’, ‘.’ GROUP1
blue ‘-‘, ‘:’, ‘.’ GROUP2

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by