如何在 Matlab 中使用 100x11 数组绘制抖动图?

How to draw a jitter plot using 100x11 array in Matlab?

我可以使用以下代码为 out 绘制大小为 100x11 的图

x=0:0.1:1; plot(x, out(:,(x*10)+1),'ko');

但我不知道如何为该数据绘制抖动图。

下面是我用来将数据保存到输出变量并尝试使用抖动图绘制输出数据的完整 Matlab 代码。

clc;
close all;
clear all;

heads = 0;
flip_chance = 0.0;
weight = 0.0;
c = 2;
output = zeros(100,11);
for p = 0.1:0.1:1.0

    for i = 1:1:100

        heads = 0;
        flip_chance = 0.0;

        for j = 1:1:10
           weight = rand();
           flip_chance = (p*10)+weight;
           if flip_chance >= 0.5 && weight <= p
              heads = heads + 1; 
           end

        end
        %fprintf ("p : %f , heads : %d\n ", c, heads);
        output(i, c) = heads;

    end
     c = c+1;
end
x=0:0.1:1;
plot(x, output(:,(x*10)+1),'ko');

当我 运行 使用绘图时,我的输出低于

我试图以下面的格式获取情节

抖动图是指像您制作的散点图,但每个点的位置都添加了一些噪声。例如,您可以使用以下代码:

sz = size(output);
x = repmat(linspace(0,1,sz(2)),sz(1),1);
plot(x+0.06*rand(sz),output+0.6*rand(sz),'k.')

我正在使用 x+0.06*rand(sz),因为 x 的增量为 0.1,因此这给出了沿 x 轴的点间距的 60% 的点分布。您可以根据自己的喜好更改 0.06。与output+0.6*rand(sz)相同:0.6是间距的60%。

编辑

您发布的 "goal" 图表仅在 y 轴上使用抖动。您将省略添加到 x 的随机值来完成此操作。它似乎也使用了很多抖动,在视觉上合并了不同 y-groups 的点。对于这样的图表,您可以将随机乘数至少设置为 1,但我不推荐这样做。