How can I set two different color for each lsline in the scatter plot?

21 ビュー (過去 30 日間)
Chang seok Ma
Chang seok Ma 2022 年 1 月 24 日
回答済み: Walter Roberson 2022 年 1 月 24 日
Hello,
I have one question about lsline.
Basically, I want to have two lsline(C and D), one for A and one for B respectively.
I would like to set different color for each lsline and also would like to make legend for each one.
So I wrote the code as below. However, it gives me the two blue lsline instead of one read and one blue.
So I was wondering how should I make the code to get the right figure.
Thanks in advance.
% Subplot
figure(6)
A = scatter(semi2008(h_to_plot),semi2001(h_to_plot),[],[0 0.4470 0.7410],'o','Linewidth',1);
hold on
C = lsline;
hold on
B = scatter(semi2008_zoomed(h_to_plot_zoomed),semi2001(h_to_plot_zoomed),[],[0.8500 0.3250 0.0980],'o','Linewidth',1);
hold on
D = lsline;
hold on
grid on
xlabel('2008')
ylabel('2001')
legend([A B C D],'scatter1','scatter2','line1','line2','Location','southeast')
set(C,'color','r')
set(D,'color','b')

採用された回答

Walter Roberson
Walter Roberson 2022 年 1 月 24 日
lsline creates a least squared line for each scatter plot in the axes.
At the time you call lsline the first time you have plotted only A so C reflects only A.
At the time you call lsline the second time, you have A and B plotted, and lsline creates lines for each of them, so D contains the handles for two lines.
When you put it all together you have a vector with five handles: one for A directly, one for B directly, one the first lsline for A, then one for the second lsline for A, then one for the lsline for B.
What you should do is get rid of the first lsline call, since the second lsline call generates lines for each of the scatter plots.

その他の回答 (0 件)

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by