Multiple lines for a single legend entry

117 ビュー (過去 30 日間)
Szilard Novoth
Szilard Novoth 2020 年 5 月 5 日
編集済み: Szilard Novoth 2021 年 9 月 6 日
Hi!
I was wondering if it is possible to add a single legend for multiple lines, like here:
Thank you in advance!
  1 件のコメント
darova
darova 2020 年 5 月 5 日
I think it's impossible. One object - one legend

サインインしてコメントする。

採用された回答

David Neussl
David Neussl 2021 年 9 月 3 日
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 件のコメント
Szilard Novoth
Szilard Novoth 2021 年 9 月 6 日
編集済み: Szilard Novoth 2021 年 9 月 6 日
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

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeLegend についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by