2

2つのベクトルを互いにプロットしています。3番目のベクトルの対応する値に基づいて、各ポイントをプロットするために使用されるシンボルを変更したいと思います。

言い換えると、XとYをプロットしている場合、各プロットポイントを次のように「*」として表示できることがわかります。

plot (X, Y, "*")

しかし、Zの一部の値に対して「*」が表示され、他の値に対して「+」が表示されるように、3番目のベクトルZをどのように含めることができますか?

4

3 に答える 3

4

メソッドを使用して、 +/*が2つの別々の配列に出力されるZの要素のインデックスを取得することによっても実行できますfind

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 に答える