带有彩色组和组内不同标记的散点图

Nin*_*naG 2 matlab plot scatter lines

我试图用不同的群体制作散点图.除此之外,我希望每组2个点有2个不同的标记和一种颜色,它们也用一条线连接.但请参阅下面的详细信息

我有4个矩阵

Db = [0.4745 0.3886 0.3316 0.2742; 0.5195 0.3825 0.3341 0.2846; 0.4929 0.3951 0.3161 0.2918; 0.4905 0.4052 0.3240 0.2882];
Dw = [0.4814 0.3905 0.3418 0.2922; 0.5258 0.3952 0.3420 0.2974; 0.4945 0.4012 0.3386 0.3001; 0.4885 0.4076 0.3382 0.3056];
Sb = [0.0476 0.0527 0.0543 0.0592; 0.0432 0.0503 0.0521 0.0592; 0.0460 0.0531 0.0536 0.0508; 0.0488 0.0520 0.0542 0.0543];
Sw = [0.0693 0.0738 0.0785 0.0839; 0.0642 0.0731 0.0763 0.0862; 0.0670 0.0755 0.0807 0.0753; 0.0744 0.0733 0.0792 0.0776];
Run Code Online (Sandbox Code Playgroud)

我想将它们绘制为Sb反对DbSw反对的散点图Dw.但现在我希望他们有不同的标记,以便Sb/ Db点有一个'x'和Sw/ Dw点有一个'o'.

基本上我希望将较低的一组点作为'x'而将上面的点作为'o'

然后另外我想将它们用线连接,因此,例如第一元件Sb/ Db应与所述第一元件被连接Sw/ Dw.

像这样的东西(在这个例子的图形编辑器中编辑...)

用线连接点

我试过了 gscatter

gscatter([Db(:)' Dw(:)'],[Sb(:)' Sw(:)'],[1:16 1:16])
Run Code Online (Sandbox Code Playgroud)

但有了这个,我不知道如何更改标记或添加行.

有人可以帮我弄这个吗?

Wol*_*fie 5

您可以通过几个电话scatter和一个电话来完成此操作line.

% Turn your data into 1D row vectors
vDb = Db(:).'; vDw = Dw(:).'; vSb = Sb(:).'; vSw = Sw(:).';
% Plotting
figure; hold on
% Scatters for points
scatter(vDb, vSb, 'kx'); % plotting with black (k) crosses (x)
scatter(vDw, vSw, 'ko'); % plotting with black (k) circles (o)
% Line to get lines!
line([vDb; vDw], [vSb; vSw], 'color', 'k') % Plot black (k) lines between 'b' and 'w' pts 
Run Code Online (Sandbox Code Playgroud)

输出:

情节


您可以通过仅使用多个调用line而不是使用来获得每对不同的颜色scatter,指定两个调用的标记,但仅使用开始/结束点,用另一个替换另一个NaN.

% No need for 'hold on' as line doesn't clear the plot!
figure;
line([vDb; NaN.*vDw], [vSb; NaN.*vSw], 'marker', 'x') % Plot coloured x markers
line([NaN.*vDb; vDw], [NaN.*vSb; vSw], 'marker', 'o') % Plot coloured o markers
line([vDb; vDw], [vSb; vSw]) % Plot coloured lines between 'b' and 'w' pts
Run Code Online (Sandbox Code Playgroud)

输出:

plot2

请注意,这使用默认颜色集.这可以通过使用来改变

set(gca, 'colororder', mycolours)
Run Code Online (Sandbox Code Playgroud)

其中mycolours是3列RGB矩阵,如果使用,可以看到get(gca, 'colororder').