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

问题描述 投票:0回答:1

我可以使用下面的代码绘制尺寸为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');

当我使用情节运行时,我的输出低于输出

enter image description here

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

enter image description here

matlab plot jitter
1个回答
0
投票

抖动图表示像您所做的散点图,但每个点的位置都会添加一些噪声。例如,您可以使用以下代码:

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%。

编辑

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

© www.soinside.com 2019 - 2024. All rights reserved.