2つのベクトルを互いにプロットしています。3番目のベクトルの対応する値に基づいて、各ポイントをプロットするために使用されるシンボルを変更したいと思います。
言い換えると、XとYをプロットしている場合、各プロットポイントを次のように「*」として表示できることがわかります。
plot (X, Y, "*")
しかし、Zの一部の値に対して「*」が表示され、他の値に対して「+」が表示されるように、3番目のベクトルZをどのように含めることができますか?
2つのベクトルを互いにプロットしています。3番目のベクトルの対応する値に基づいて、各ポイントをプロットするために使用されるシンボルを変更したいと思います。
言い換えると、XとYをプロットしている場合、各プロットポイントを次のように「*」として表示できることがわかります。
plot (X, Y, "*")
しかし、Zの一部の値に対して「*」が表示され、他の値に対して「+」が表示されるように、3番目のベクトルZをどのように含めることができますか?
メソッドを使用して、 +/*が2つの別々の配列に出力されるZの要素のインデックスを取得することによっても実行できますfind
。
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')