MatLab Plot - 将0.1添加到具有相同坐标的点

时间:2015-01-19 12:34:23

标签: matlab matrix plot

我的问题是:

我正在为学生绘制一个包含每个作业成绩的矩阵,例如[作业x成绩],但如果多个学生在同一作业中获得相同的成绩,则这些成绩将相互叠加。我想在每个点的x坐标和y坐标上添加一个小的随机数(介于-0.1和0.1之间)。

1 个答案:

答案 0 :(得分:1)

要完全按照你的要求做,你可以做这样的事情 -

assignments = (1:10)'
scores = randi(10, 10, 20);

分配与学生分数的原始情节 -

plot(assignments, scores, '.b')

enter image description here

为每个分数添加一个小的随机偏移量 -

plot(assignments, scores+0.2*(rand(size(scores))-0.5), '.b')

enter image description here

最后,您可以选择更复杂但更漂亮的解决方案 -

counts = zeros(10, 10);
for i = 1:10
  for j = 1:10
    counts(i, j) = sum(scores(i,:)==j);
  end
end

figure();
hold on;
for i = 1:10
  for j = 1:10
    if counts(i,j) > 0
      plot(i, j, 'o', 'MarkerSize', 2*counts(i,j), 'MarkerEdgeColor', 'k', 'MarkerFaceColor', 'b'); hold on;
    end
  end
end

enter image description here