我有一個典型的場景,其中有一個矢量X和矢量Y。向量X包含增加的值,例如X = [1 1 1 2 2 3 4 4 4 4 4]。向量Y包含與X相同大小的實際值。我想要繪製對於相應索引的X的每個不同值的顏色變化的索引V Y。如何繪製不同間隔的顏色函數?
例如,對於前3個值爲1的圖應該有color1,對於接下來的2個值爲2的color2,對於1的值爲3的color3等等。
任何一個可以幫助我
我有一個典型的場景,其中有一個矢量X和矢量Y。向量X包含增加的值,例如X = [1 1 1 2 2 3 4 4 4 4 4]。向量Y包含與X相同大小的實際值。我想要繪製對於相應索引的X的每個不同值的顏色變化的索引V Y。如何繪製不同間隔的顏色函數?
例如,對於前3個值爲1的圖應該有color1,對於接下來的2個值爲2的color2,對於1的值爲3的color3等等。
任何一個可以幫助我
大廈Laurent's answer和實施你的 「指數對y」 的要求,
function color_plot(data_vector, color_vector)
styles={'ro','g.','bx','kd'};
hold off;
for i=unique(color_vector)
thisIdx=find(color_vector==i);
thisY=data_vector(color_vector==i);
thisStyle=styles{mod(i-1,numel(styles))+1};
plot(thisIdx,thisY,thisStyle);
hold on;
end
hold off;
我的版本還允許arb大大的顏色指數;如果您沒有定義足夠的樣式,它只是迴繞並重新使用顏色。
更新注意我必須在計算上面修正一個符號哦thisStyle
。
與
X = [1 1 1 2 2 3 4 4 4 4 4];
Y=rand(size(X))
color_plot(Y,X)
測試它現在給
我喜歡你的代碼(它比我的代碼更緊湊!)。它顯示了段與線段之間的一些間隙(即'r-'風格)。 –
正確 - 我的代碼不會嘗試加入單獨的段...如果它沒有,它將不會如此緊湊;-)。 –
一個plot()
功能選項會更好(也許它存在)。
這裏有一個解決方法的功能做到這一點:
function colorPlot(data_vector, colors_vector)
%PLOTCOL plots data_vector with colors found in colors_vector
Styles=[{'r-'} {'g-'} {'b-'} {'k-'}];
last_off=0;
last_data=0;
for i=unique(colors_vector)
data_segment=data_vector(colors_vector==i);
len=length(data_segment);
if last_off==0
hold off;
plot(data_segment, 1:len,char(Styles(i)));
last_off=len;
else
plot([last_data data_segment],last_off:last_off+len,char(Styles(i)));
last_off=last_off+len;
end
last_data=data_segment(len);
hold on;
end
hold off;
end
這樣調用它:
colorPlot(Y,X);
修正了這個版本中的一些錯誤(顏色段現在是連續的,最終繪製值vs索引) –
嗯...當有人說「情節」a「與」Y「」,你'a'在y軸上, Y軸在X軸上?我相反地理解它...... –
@JonasHeidelberg「plot' a'對'Y'」,實際上是的,我假設'a'是縱座標,'Y'是absissa。 (但我不是母語,也許我錯了) –
見http://stackoverflow.com/questions/2444575/plotting-multi-colored-line-in-matlab,它有幾點建議。 – mtrw