2017-10-06 104 views
-1

我想製作一堆具有相同顏色的圖(或子圖),然後前進到下一個顏色,再次繪製一堆圖,等等。使用默認顏色很好。此外,我的圖的數量可能會超過默認的顏色數量,所以我需要循環瀏覽它。我怎樣才能做到這一點?在Matlab中,如何在繪圖時控制顏色迭代器?

回答

0

會這樣的東西滿足您的要求?如果有很多顏色頻繁變化的圖表,可以創建一個包含索引時間(當出現顏色切換時)作爲關鍵字和顏色作爲值的字典。下面的代碼更簡單。

% Colors for 10 red plots and 5 black plots 
colors = [repmat('r', 1, 10), repmat('b', 1, 5)]; 
for i = 1:length(colors) 
    figure; plot(x, y, colors(i)); 
end 
+0

沒有那就沒辦法了,因爲它不是預先定義的,我會多少地塊爲每個顏色。 – LWZ

+0

MATLAB中的註釋不使用#符號,您可能想要更改 – xrr

0

每當你的情節,你可能只是隨機選擇顏色:

% Create a random RGB color 
color = rand(1,3); 

% Plot as many times as needed with the newly created random color 
plot (X,Y,'color', color) 

可以遍歷這個必要

0

當你創建一個軸多次,它具有屬性ColorOrderIndex它指的是下一個要使用的顏色的索引。 ColorOrderIndex的初始值是1,並且每次向相同的座標軸添加一個新圖時(沒有清除,即使用hold on),該值將增加並循環顯示所有顏色(它們本身存儲在屬性ColorIndex作爲具有三列的二維矩陣,其中每一行代表一個RGB三元組,這個矩陣有一個默認值,由7種顏色組成(在Matlab R2015a中),但你可以指定其他任何你想要的顏色)。 因此,通過手動確保ColorOrderIndex屬性的值不增加,可以爲下一個圖保留相同的顏色。

ax = axes; 
hold on; 
numberOfColors = length(ax.ColorOrder); 
ax.ColorOrderIndex = 1; 

plot([0,0],[0,1],'LineWidth',2); 
ax.ColorOrderIndex = mod(ax.ColorOrderIndex-2,numberOfColors)+1; % keep same color 
plot([1,1],[0,1],'LineWidth',2); 
ax.ColorOrderIndex = mod(ax.ColorOrderIndex-2,numberOfColors)+1; % keep same color 
plot([2,2],[0,1],'LineWidth',2); 

% change color 
plot([3,3],[0,1],'LineWidth',2); 
ax.ColorOrderIndex = mod(ax.ColorOrderIndex-2,numberOfColors)+1; % keep same color 
plot([4,4],[0,1],'LineWidth',2); 


% change color 
plot([5,5],[0,1],'LineWidth',2); 
ax.ColorOrderIndex = mod(ax.ColorOrderIndex-2,numberOfColors)+1; % keep same color 
plot([6,6],[0,1],'LineWidth',2); 
ax.ColorOrderIndex = mod(ax.ColorOrderIndex-2,numberOfColors)+1; % keep same color 
plot([7,7],[0,1],'LineWidth',2); 
ax.ColorOrderIndex = mod(ax.ColorOrderIndex-2,numberOfColors)+1; % keep same color 
plot([8,8],[0,1],'LineWidth',2); 

% and so on... 

Output of above code