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

MatLab Plot - add 0.1 to points with same coordinates

我的问题是:

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

要完全按照您的要求进行操作,您可以这样做 -

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

作业与学生分数的原始关系图 -

plot(assignments, scores, '.b')

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

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

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

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