【问题标题】:MatLab Plot - add 0.1 to points with same coordinatesMatLab Plot - 将 0.1 添加到具有相同坐标的点
【发布时间】:2015-03-17 11:13:16
【问题描述】:

我的问题是:

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

【问题讨论】:

  • 什么阻止了你?你已经做了什么,你在哪里卡住了?
  • 您是否考虑过使用其他方式来显示存在多个重合值?例如,增加点大小;或使用高度为出现次数的垂直条(即直方图)

标签: matlab matrix plot


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

【讨论】:

  • 非常感谢! :-)
  • 不错的答案!只是一个小问题:我会让标记 area (不是线性大小)与计数成正比
猜你喜欢
  • 2012-01-14
  • 2018-07-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-10
相关资源
最近更新 更多