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反对Db和Sw反对的散点图Dw.但现在我希望他们有不同的标记,以便Sb/ Db点有一个'x'和Sw/ Dw点有一个'o'.
然后另外我想将它们用线连接,因此,例如第一元件Sb/ Db应与所述第一元件被连接Sw/ Dw.
像这样的东西(在这个例子的图形编辑器中编辑...)
我试过了 gscatter
gscatter([Db(:)' Dw(:)'],[Sb(:)' Sw(:)'],[1:16 1:16])
Run Code Online (Sandbox Code Playgroud)
但有了这个,我不知道如何更改标记或添加行.
有人可以帮我弄这个吗?
您可以通过几个电话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)
输出:
请注意,这使用默认颜色集.这可以通过使用来改变
set(gca, 'colororder', mycolours)
Run Code Online (Sandbox Code Playgroud)
其中mycolours是3列RGB矩阵,如果使用,可以看到get(gca, 'colororder').
| 归档时间: |
|
| 查看次数: |
363 次 |
| 最近记录: |