我正试图用不同的群体制作散点图。除此之外,我希望每组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];
我想将它们绘制为散布图,Sb
针对Db
和Sw
针对Dw
。但现在我希望他们有不同的标记,以便Sb
/ Db
点有一个' x'并且Sw
/ Dw
点有一个' o。
然后另外我想用一行连接它们,所以例如Sb
/ Db
的第一个元素应该与Sw
/ {{1}的第一个元素相连接}。
像这样的东西(在这个例子的图形编辑器中编辑......)
我尝试了Dw
gscatter
但有了这个,我不知道如何更改标记或添加线条。
有人可以帮我这个吗?
答案 0 :(得分: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
输出:
只需使用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
输出:
请注意,这使用默认颜色集。可以使用
更改此设置set(gca, 'colororder', mycolours)
其中mycolours
是一个3列RGB矩阵,如果您使用get(gca, 'colororder')
就会看到。