Scatterplot matlab

时间:2017-05-04 10:52:56

标签: matlab scatter-plot scatter

我对scatter情节有些疑问。

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

在x轴上它应该是赋值的数量,在y轴上它应该是所有等级。

等级矩阵定义为12x4矩阵

我的代码如下所示:

n_assignments = size(grades,2);  % Total number of assignments.
n_students = size(grades,1);    % Total number of student.
hold on;                    % Retain current plot when adding new plots.
for i = 1:n_assignments     % Loop through every assignment.
% Scatter plot of assignment vs grades for that assignment.
% One assignment on every iteration.
scatter(i*ones(1, n_students), grades(i, :), 'jitter', 'on', 'jitterAmount', 0.1);
end
hold off;                   % Set the hold state to off.
set(gca, 'XTick', 1:n_assignments); % Display only integer values in x-axis.
xlabel('assignment');       % Label for x-axis.
ylabel('grades');           % Label for y-axis.
grid on;                    % Display grid lines.

但我不断收到错误消息:

X and Y must be vectors of the same length.

1 个答案:

答案 0 :(得分:3)

  

请注意,散点图抖动是未记录的   特征。您还可以使用半透明标记   散点图,这可能是另一种解决方案   目前的问题。

我将在此回答中介绍scatter 'jitter'功能。

请注意,'jitter'仅影响x轴,但不影响y轴(Undocumented Matlab上的更多信息)。

根据您的描述看看我做的这个例子:

假设您有一个有20名学生的班级,他们已完成5项作业。作业的成绩存储在矩阵(grades)中,其中行是作业,列是学生。

然后,我只需在scatter矩阵中生成一个grades数据,一次一行,for循环,然后使用hold on保留所有数据同一图上的图形。

n_assignments = 5;  % Total number of assignments.
n_students = 20;    % Total number of students.

grades = randi(10, n_assignments, n_students);  % Random matrix of grades.

hold on;                    % Retain current plot when adding new plots.
for i = 1:n_assignments     % Loop through every assignment.
    % Scatter plot of assignment vs grades for that assignment.
    % One assignment on every iteration.
    scatter(i*ones(1, n_students), grades(i, :), 'jitter', 'on', 'jitterAmount', 0.1);
end
hold off;                   % Set the hold state to off.

set(gca, 'XTick', 1:n_assignments); % Display only integer values in x-axis.
xlabel('assignment');       % Label for x-axis.
ylabel('grades');           % Label for y-axis.
grid on;                    % Display grid lines.

结果如下:

Scatter plot with jitter

如果您仍想在y轴上添加抖动,则必须通过向grades数据添加随机噪声来手动执行此操作,这是我个人不建议的,因为scatter情节可能会混合,从而使情节完全不可靠。