2

我正在绘制两个向量。我想根据第三个向量中的相应值来改变用于绘制每个点的符号。

换句话说,如果我正在绘制 X 和 Y,我知道我可以让每个绘图点显示为“*”,如下所示:

plot (X, Y, "*")

但是我怎样才能涉及第三个向量 Z,以便为某些 Z 值显示“*”,而为其他值显示“+”?

4

3 回答 3

4

也可以通过获取 Z 元素的索引来完成,其中+/*将使用find方法打印在 2 个单独的数组中。

考虑到您想为Z的正值打印(+)和为负值打印 ( *),以下代码将执行此操作:

    pos = find(Z > 0); neg = find(Z <= 0);
    plot(X(pos), Y(pos), 'k+', X(neg), Y(neg), 'k*');
于 2017-06-05T10:00:14.513 回答
2

尝试这样的事情:

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
于 2012-05-18T14:05:26.397 回答
2

下面的代码将为 z > 0 打印“ro”,为 z < 0 打印“bx”

plot(x(z>0), y(z>0), 'ro', x(z<0), y(z<0), 'bx')
于 2015-11-20T05:29:53.920 回答