Remove the legends for some lines in a plot
87 ビュー (過去 30 日間)
古いコメントを表示
Hello,
I want to plot some data points and fit a line to the data. I have done so and everything is ok; the only issue is there are some more items in the legend box corresponding to the fitted lines.
C=['b','r','g','m'];
format short
a=1:4;
for i=1:length(a)
scatter(LT, Ra(i,:),C(i),'filled');
hold on
end
grid on
grid minor
xticks([30, 40, 50, 60, 70])
xticklabels({'30','40','50','60','70'})
for i=1:4
coeffs = polyfit(LT, Ra(i,:), 1);
% Get fitted values
fittedX = linspace(min(LT), max(LT), 200);
fittedY = polyval(coeffs, fittedX);
% Plot the fitted line
plot(fittedX, fittedY,C(i) , 'LineWidth', 2);
end
lgd=legend('25%','50%','75%','100%','FontSize',20)
lgd.Title.FontSize = 20;
The resulted figure is as follows:
Although I only have
lgd=legend('25%','50%','75%','100%','FontSize',20)
in the script, the fitted lines are unwantedly shown in the legend box with no dedicated name:
My question:
How can I get rid of those extra lines in the legend box?
Any help is highly appredicated!
0 件のコメント
採用された回答
Star Strider
2020 年 6 月 25 日
‘How can I get rid of those extra lines in the legend box?’
Refer only to the scatter plots by handle reference:
LT = 0.5:9.5;
Ra = randn(4,numel(LT));
C=['b','r','g','m'];
hold on
for i = 1:size(Ra,1)
hs(i) = scatter(LT, Ra(i,:),C(i),'filled'); % Return Handles To ‘scatter’ Objects
coeffs = polyfit(LT, Ra(i,:), 1);
fittedX = linspace(min(LT), max(LT), 200);
fittedY = polyval(coeffs, fittedX);
plot(fittedX, fittedY,C(i) , 'LineWidth', 2);
end
hold off
lgd=legend(hs, '25%','50%','75%','100%','FontSize',20); % Use Only ‘scatter’ Objects In ‘legend’ call
Include the other lines in your code that I omitted here.
.
4 件のコメント
Rodrigo Martinez
2022 年 5 月 2 日
Dear Star Strider,
I've been working for a while with Matlab but I have always worked with my own data and figures. This time, however, my colleague sent me these figures I need to put in a paper. The legneds I need to modify are exactly the same as the ones in this post: scatter data and fit curves for which I don't need legends. Is it possible to get rid of the extra legends without needing to ask for the data to create new figures?
All the best,
Star Strider
2022 年 5 月 2 日
@Rodrigo Martinez — I am not certain that I understand what you want.
One option to select only some data series for the legend might be to use 'DisplayName' —
LT = 0.5:9.5;
Ra = randn(4,numel(LT));
C=['b','r','g','m'];
dnv = 25:25:100;
hold on
for i = 1:size(Ra,1)
hs(i) = scatter(LT, Ra(i,:),C(i),'filled', 'DisplayName',sprintf('%.0f%%',dnv(i))); % Return Handles To 'scatter' Objects, Use 'DisplayName'
coeffs = polyfit(LT, Ra(i,:), 1);
fittedX = linspace(min(LT), max(LT), 200);
fittedY = polyval(coeffs, fittedX);
plot(fittedX, fittedY,C(i) , 'LineWidth', 2);
end
hold off
lgd=legend(hs([1 4]),'FontSize',20, 'Location','best'); % Use Only Selected 'scatter' Objects In 'legend' Call
.
その他の回答 (1 件)
dpb
2020 年 6 月 25 日
If you only want the scatter points in legend, set the 'Annotation' property to not show the lines...
plot(fittedX, fittedY,C(i) , 'LineWidth', 2,'Annotation','off');
0 件のコメント
参考
カテゴリ
Help Center および File Exchange で Legend についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!