【问题标题】:Spacing between markers in scatter plot Matlab散点图中标记之间的间距 Matlab
【发布时间】:2015-04-25 08:13:14
【问题描述】:

我在一张图中有 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 个不同的点(一个代表每个散点图),所以我想知道如何让每个点都有一条垂直车道?

因此,如果我使用stem 而不是scatter,您会看到茎线重叠,并且更难查看图,如下面的屏幕截图所示。因此,对于每个 xtick,它都有 6 个词干,我想知道是否无论如何我可以将 6 个词干中的 5 个稍微移动一下,以便它们都出现。

所以这是我当前覆盖的茎的屏幕截图:

【问题讨论】:

    标签: matlab matlab-figure


    【解决方案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');
    

    例子:

    【讨论】:

      【解决方案2】:

      我的第一个答案是不可能的。如果您有二维数据并且某些数据与其他数据重叠,则您无法修改数据以提高可视化效果!

      如果需要改进,可以使用三维:

      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 轴上,您的数据按照您的要求由“车道”分隔。所以现在由您和您的用户来选择最佳的可视化平面。

      第二个 straighfordward 解决方案将其分割线是将所有散点图划分为不同的子图:

      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'); 
      

      【讨论】:

      • 首先,感谢您的回答。但老实说,这不是我要找的。就像您使用 stem 而不是使用 scatter 一样(我更新了我的问题),您会看到主干线重叠,这使得查看绘图变得更加困难。因此,对于每个 xtick,它都有 6 个词干,我想知道是否无论如何我可以将 6 个词干中的 5 个稍微移动一下,以便它们都出现。
      猜你喜欢
      • 2018-02-22
      • 2016-11-06
      • 1970-01-01
      • 1970-01-01
      • 2015-02-24
      • 1970-01-01
      • 2013-02-04
      • 2013-06-28
      • 1970-01-01
      相关资源
      最近更新 更多