9

I have an array of data that I would like to plot

temp=0.5*rand(500,10);
[~,offset]=meshgrid(1:500,1:10);
figure(101)
plot(temp+offset')

How can I set the line style to automatically change to the next style once the line colours have been through one cycle?

For this example I would like the 8-10th lines to have a different line style. I can do it manually but I'd like Matlab to do it for me if I can set a default option somewhere.

4

1 に答える 1

15

最初の傾向は、データをプロットする前に軸の'LineStyleOrder'プロパティを変更することかもしれません。残念ながら、 PLOTのような高レベルのプロット関数は、プロットする前に軸の'LineStyleOrder'プロパティをデフォルト値にリセットします'-'。解決策の 1 つは、ルート レベルですべての軸オブジェクトで使用される既定値を変更することです。例えば:

set(0,'DefaultAxesLineStyleOrder',{'-',':'});

最初に実線を使用し、次に点線を使用し、必要に応じてプロットごとに繰り返します。ルートのデフォルト値も変更することで、高レベルのプロット関数でカスタム'ColorOrder'プロパティを使用することもできることに注意してください。次の例では、 PLOTが赤、緑、青のみを循環するように変更します。

set(0,'DefaultAxesColorOrder',[1 0 0; 0 1 0; 0 0 1]);

さまざまな線のスタイルについて心配する代わりに、問題の別の解決策は、デフォルトの色の順序を 7 色以上に設定することです。

ルートの既定のプロパティ値が設定されると、MATLAB が閉じられるまでそのままになります。再度開くと、デフォルトのプロパティ値が工場出荷時の値に戻されます。CLEARなどのコマンドは、既定のプロパティを工場出荷時の値に戻すことはありません。代わりに、デフォルトのプロパティ値を に設定して'remove'、次のようにユーザー定義の値を元に戻す必要があります。

set(0,'DefaultAxesLineStyleOrder','remove');  %# Sets the default back to '-'

すべての軸オブジェクトで使用される既定のNextPlotプロパティを変更する別の方法として、個々の軸のプロパティを任意のもの以外 'replace'に変更すると、'LineStyleOrder'または'ColorOrder'プロパティを必要に応じて変更でき、 PLOTはそれらを既定値にリセットしません。たとえば、これもあなたが望むことをするはずです:

set(gca,'NextPlot','add','LineStyleOrder',{'-',':'});
plot(temp+offset');
于 2010-11-23T16:41:52.563 に答える