散点图matlab
Scatterplot matlab
我的 scatter
情节有些问题。
我正在绘制一个矩阵,其中包含学生每次作业的成绩,例如[assignments x grades],但如果不止一名学生在同一作业中获得相同成绩,则分数将相互叠加。我想向每个点的 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.
Please note that the scatter plot jitter is an undocumented
feature. You can also have semi-transparent markers in line and
scatter plots, which could be another alternative to solve your
current problem.
我将在本回答中介绍 scatter
'jitter'
功能。
请注意,'jitter'
仅影响 x 轴而不影响 y 轴(有关 Undocumented Matlab 的更多信息)。
看看我根据你的描述做的这个例子:
假设您的 class 有 20 名学生,他们完成了 5 项作业。作业的成绩存储在矩阵 (grades
) 中,其中行是作业,列是学生。
然后我简单地在 grades
矩阵中生成数据的 scatter
图,一次一行,在 for
loop and using 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.
这是结果:
如果您仍想在 y 轴上添加抖动,则必须通过向 grades
数据添加随机噪声来手动执行此操作,我个人不建议这样做,因为scatter
情节中的成绩可能会混合,从而使情节完全不可靠。
我的 scatter
情节有些问题。
我正在绘制一个矩阵,其中包含学生每次作业的成绩,例如[assignments x grades],但如果不止一名学生在同一作业中获得相同成绩,则分数将相互叠加。我想向每个点的 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.
Please note that the scatter plot jitter is an undocumented feature. You can also have semi-transparent markers in line and scatter plots, which could be another alternative to solve your current problem.
我将在本回答中介绍 scatter
'jitter'
功能。
请注意,'jitter'
仅影响 x 轴而不影响 y 轴(有关 Undocumented Matlab 的更多信息)。
看看我根据你的描述做的这个例子:
假设您的 class 有 20 名学生,他们完成了 5 项作业。作业的成绩存储在矩阵 (grades
) 中,其中行是作业,列是学生。
然后我简单地在 grades
矩阵中生成数据的 scatter
图,一次一行,在 for
loop and using 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.
这是结果:
如果您仍想在 y 轴上添加抖动,则必须通过向 grades
数据添加随机噪声来手动执行此操作,我个人不建议这样做,因为scatter
情节中的成绩可能会混合,从而使情节完全不可靠。