我在 Octave \ MatLab 中是个新手,在学习了一个教程之后,我发现在尝试理解此 plot()函数版本的工作原理时遇到了一些困难。
所以我有以下情况:
我有一个像这样的数据文件:
34.62365962451697,78.0246928153624,0
30.28671076822607,43.89499752400101,0
35.84740876993872,72.90219802708364,0
60.18259938620976,86.30855209546826,1
79.0327360507101,75.3443764369103,1
45.08327747668339,56.3163717815305,0
与特定学生相关的行。
然后我有这段代码,可以将这些信息加载并绘制成如下图形:
这是从txt文件加载先前数据的代码:
%% Initialization
clear ; close all; clc
%% Load Data
% The first two columns contains the exam scores and the third column
% contains the label.
data = load('ex2data1.txt');
X = data(:, [1, 2]); y = data(:, 3);
%% ==================== Part 1: Plotting ====================
% We start the exercise by first plotting the data to understand the
% the problem we are working with.
fprintf(['Plotting data with + indicating (y = 1) examples and o ' ...
'indicating (y = 0) examples.\n']);
plotData(X, y);
% Put some labels
hold on;
% Labels and Legend
xlabel('Exam 1 score')
ylabel('Exam 2 score')
% Specified in plot order
legend('Admitted', 'Not admitted')
hold off;
最后,调用定义到另一个文件的 plotData(X,y); 函数并将其传递给 X (考试1和考试的学生成绩矩阵) -2 **和 y (表示此学生是否通过大学选择的向量):
function plotData(X, y)
%PLOTDATA Plots the data points X and y into a new figure
% PLOTDATA(x,y) plots the data points with + for the positive examples
% and o for the negative examples. X is assumed to be a Mx2 matrix.
% Create New Figure
figure; hold on;
% ====================== YOUR CODE HERE ======================
% Instructions: Plot the positive and negative examples on a
% 2D plot, using the option 'k+' for the positive
% examples and 'ko' for the negative examples.
%
% Find Indices of Positive and Negative Examples
pos = find(y==1);
neg = find(y == 0);
% Plot Examples
plot(X(pos, 1), X(pos, 2), 'k+','LineWidth', 2, ...
'MarkerSize', 7);
plot(X(neg, 1), X(neg, 2), 'ko', 'MarkerFaceColor', 'y', ...
'MarkerSize', 7);
对于我来说,很明显,我不了解的唯一内容是绘制示例的最后两行:
plot(X(pos, 1), X(pos, 2), 'k+','LineWidth', 2, ...
'MarkerSize', 7);
plot(X(neg, 1), X(neg, 2), 'ko', 'MarkerFaceColor', 'y', ...
'MarkerSize', 7);
我的疑问是:
什么完全代表传递给此 plot()函数的'k +'和 ko 参数?我认为 k + 表示 + 符号,而 ko 表示上图中的圆圈符号。但是我绝对不确定这个断言,因为在这里我找不到关于此的信息:https://octave.org/doc/v4.0.0/Two_002dDimensional-Plots.html
为什么在肯定情况下使用参数 LineWidth ,而在否定情况下使用 MarkerFaceColor ?
为什么在这2条情节行中的每条行都在 ... 个字符之后?
图(X(pos,1),X(pos,2),'k +','LineWidth',2,... 'MarkerSize',7);
这些 ... 到底是什么意思?我试图将所有内容放在这样的一行中:
plot(X(pos, 1), X(pos, 2), 'k+','LineWidth', 2, ... 'MarkerSize', 7);
但是以这种方式进行操作,八度音阶很糟糕,执行被停止。为什么?我想念什么?
答案 0 :(得分:2)
'k +'和'ko'建议绘制黑色+和黑色o。 k是颜色,而+和o是绘图类型。有关规格的更多详细信息,请参见https://www.mathworks.com/help/matlab/ref/linespec.html(对于Octave应该相同)
“ LineWidth”将覆盖加号符号线的默认宽度,而“ MarkerFaceColor”将覆盖可以填充的标记的默认填充颜色(例如,圆形,正方形等)。由于未为圆形符号指定LineWidth,因此它仅使用默认宽度。由于加号不可填充,因此不需要MarkerFaceColor。
'...'只是意味着该行溢出到下一行。在某些其他编程语言中,它类似于\或&。