我正在绘制两个向量。我想根据第三个向量中的相应值来改变用于绘制每个点的符号。
换句话说,如果我正在绘制 X 和 Y,我知道我可以让每个绘图点显示为“*”,如下所示:
plot (X, Y, "*")
但是我怎样才能涉及第三个向量 Z,以便为某些 Z 值显示“*”,而为其他值显示“+”?
我正在绘制两个向量。我想根据第三个向量中的相应值来改变用于绘制每个点的符号。
换句话说,如果我正在绘制 X 和 Y,我知道我可以让每个绘图点显示为“*”,如下所示:
plot (X, Y, "*")
但是我怎样才能涉及第三个向量 Z,以便为某些 Z 值显示“*”,而为其他值显示“+”?
也可以通过获取 Z 元素的索引来完成,其中+/*将使用find
方法打印在 2 个单独的数组中。
考虑到您想为Z的正值打印(+)和为负值打印 ( *),以下代码将执行此操作:
pos = find(Z > 0); neg = find(Z <= 0);
plot(X(pos), Y(pos), 'k+', X(neg), Y(neg), 'k*');
尝试这样的事情:
x = [1 2 3];
y = [1 4 9];
z = {'*' '+' '*'};
for i_=1:length(x)
eval(["plot(x(" num2str(i_) "),y(" num2str(i_) "),'" z{i_} "')"])
hold on
end
这实质上是n
绘制图,其中n
是 和 的x
长度y
。如果您希望每个点的点颜色发生变化,您可以使用hold all
而不是hold on
. 如果您希望点样式以 的值为条件y
,您可以执行
x = [1 2 3];
y = [1 4 9];
z = {'*' '+' '*'};
for i_=1:length(x)
if (y(i_) > 1)
z{i_} = '*';
else
z{i_} = '+';
end
eval(["plot(x(" num2str(i_) "),y(" num2str(i_) "),'" z{i_} "')"])
hold on
end
下面的代码将为 z > 0 打印“ro”,为 z < 0 打印“bx”
plot(x(z>0), y(z>0), 'ro', x(z<0), y(z<0), 'bx')