0

への 1 回の呼び出しで複数の線をプロットしplot()、線ごとに異なる線スタイルを使用したいと考えています。次に例を示します。

両方

plot([1,2,3]', [4,5;6,7;8,9], {'-o', '-x'})

hs = plot([1,2,3]', [4,5;6,7;8,9])
set(hs, 'LineStyle', {'--'; '-'})

働かないでください。私は角括弧と中括弧を使って難解な組み合わせをたくさん試しましたが、何もうまくいかないようです.

Y の列をループしてplot()各列を呼び出すことができることはわかっていますが (この質問のように)、それは私が求めているものではありません。可能であれば、ここでループを使用することは避けたいと思います。

ありがとう。

PS: この'prettyPlot'スクリプトは、このようなことができると言っていますが、これを行う組み込みの方法があるかどうか知りたいです。

PPS: これに対する迅速な解決策が必要な場合は、これを試してください。

for i = 1:length(hs)
   set(hs(i), 'Marker', markers{i}); 
   set(hs(i), 'LineStyle', linestyles{i}); 
end

例えばmarkers = {'+','o','*','.','x','s','d','^','v','>','<','p','h'}

4

1 に答える 1

1

http://www.mathworks.com/help/matlab/ref/plot.htmlを参照すると、これは単一のプロット コマンドで複数の線を描画する方法です。

plot(X1,Y1,LineSpec1,...,Xn,Yn,LineSpecn)

だからあなたの考え

plot([1,2,3]', [4,5;6,7;8,9], {'-o', '-x'})

次のように記述する必要があります。

plot([1,2,3]', [4,6,8], '-o', [1,2,3]',[5,7,9],'-x')

結果:

単一のプロット コマンドで複数行

入力パラメーターを cell 配列に再編成し、 cellfun を使用してプロット コマンドを各 cell 要素に適用します。

x = [1,2,3]';
xdata = {x;x};
ydata = {[4,6,8];[5,7,9]};    
lspec = {'-o';'-x'};

hold all;
cellfun(@plot,xdata,ydata,lspec);
于 2016-10-15T18:50:37.833 に答える