2010-11-23 72 views
9

我有一組數據,我想繪製如何在MATLAB中設置圖的默認線型?

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

如何設置線型自動更改爲下一個樣式一旦線路顏色已經通過一個循環?

對於這個例子,我希望第8-10行有不同的線條樣式。我可以手動完成,但是如果我可以在某處設置默認選項,我希望Matlab能夠爲我做。

回答

15

您的第一個傾向可能是在繪製數據之前更改軸的'LineStyleOrder' property。不幸的是,在繪圖之前,像PLOT這樣的高級繪圖功能會將軸的'LineStyleOrder' property重置爲默認值'-'。一種解決方案是在root level的所有軸對象使用的change the default value。例如:

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

首先使用實線,然後是虛線,然後在必要時重複每個繪圖。請注意,您也可以使用自定義'ColorOrder' property以及高級繪圖函數,方法是更改​​根目錄下的默認值。下面的例子將改變它,只有紅色,綠色和藍色之間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 property個別軸對任何東西除了'replace'然後您可以將'LineStyleOrder''ColorOrder'屬性更改爲任何您想要的值,PLOT將不會將其重置爲其默認值。例如,這應該做你想要的:

set(gca,'NextPlot','add','LineStyleOrder',{'-',':'}); 
plot(temp+offset'); 
set(gca,'NextPlot','add','LineStyleOrder',{'-',':'}); 
plot(temp+offset'); 
+0

因此,如果OP希望風格循環``r - ','g - ','b - ','r:','g :','b:'`,他們可以把'ColorOrder''設置爲'[1 0 0; 0 1 0; 0 0 1]`和LineStyleOrder爲`{' - ',' - ',' - ',':',':',':'}`,對吧? – Jonas 2010-11-23 22:16:39