我在一张图中有6个散点图,如下所示。
A=rand(10,2);
B=rand(10,2);
C=rand(10,2);
figure();
hold on;
scatter( 1:10, A(:,1), 'r*');
scatter( 1:10, A(:,2), 'ro');
scatter( 1:10, B(:,1), 'b*');
scatter( 1:10, B(:,2), 'bo');
scatter( 1:10, C(:,1), 'g*');
scatter( 1:10, C(:,2), 'go');
我想知道我是否可以在点之间留出一些间距,这样就不会有两个点相互叠加。因此,例如,在x轴的值1
上将有6个不同的点(一个代表每个散点图),所以我想知道如何让每个点都有一个垂直的通道? / p>
因此,如果我使用stem
而不是使用scatter
,您会看到干线叠加,这使得查看绘图更加困难,如下面的屏幕截图所示。因此对于每个xtick它有6个茎,我想知道是否有任何方法我可以稍微移动6个茎中的5个以便它们全部出现。
所以这是我当前词干覆盖的截图:
答案 0 :(得分:1)
对 x 值应用小位移?
x = 1:10;
y1 = rand(1,10);
y2 = rand(1,10);
y3 = rand(1,10); %// example data
delta = .004; %// displacement step, relative to x range
x_range = max(x)-min(x);
Delta = range*delta;
hold all
stem(x-Delta, y1, 'o');
stem(x, y2, '*');
stem(x+Delta, y3, 's');
示例:
答案 1 :(得分:0)
我的第一个答案将是不可能的。如果您有二维数据且某些数据与其他数据重叠,您无法修改数据以改善可视化效果!
如果您需要改进它,可以使用第三维:
figure();
hold on;
scatter3( 1:10, A(:,1), 1*ones(1,10), 'r*');
scatter3( 1:10, A(:,2), 2*ones(1,10), 'ro');
scatter3( 1:10, B(:,1), 3*ones(1,10), 'b*');
scatter3( 1:10, B(:,2), 4*ones(1,10), 'bo');
scatter3( 1:10, C(:,1), 5*ones(1,10), 'g*');
scatter3( 1:10, C(:,2), 6*ones(1,10), 'go');
在Z轴中,您按要求将数据分隔为“通道”。因此,现在由您和您的用户选择最佳可视化平面。
第二个直接解决方案来分割线条是划分不同子图中的所有散点图:
figure();
subplot(6,1,1)
scatter( 1:10, A(:,1), 'r*');
subplot(6,1,2)
scatter( 1:10, A(:,2), 'ro');
subplot(6,1,3)
scatter( 1:10, B(:,1), 'b*');
subplot(6,1,4)
scatter( 1:10, B(:,2), 'bo');
subplot(6,1,5)
scatter( 1:10, C(:,1), 'g*');
subplot(6,1,6)
scatter( 1:10, C(:,2), 'go');