2017-10-06 7 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に格納されています)。この行列は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