2012-07-28 79 views
1

我現在有這樣的代碼:如何繪製圖上標記有不同的顏色

fDeals = fopen([logsFolder stock '_deals.log']); 
data = textscan(fDeals, '%f:%f:%f:%f %f,%f %f,%f %f,%f %f'); 
fclose(fDeals); 

% hh:min:sec:millisec 
secvec = [60*60 60 1 1e-3]; 
x = [data{1:4}] * secvec'; 

flvec = [1 1e-16]; 
y = [data{5:6}] * flvec'; 

ammount = data{11}; 

xindays = x/(24*60*60); 

plot(xindays, y, 'go','MarkerSize',6,'LineWidth',3); 

它工作正常,但它總是創建綠色標記。如果量大於0,我需要創建綠色標記,否則我想創建紅色標記。怎麼做?

可能的我應該創建單獨xGreenxRedyGreenyRed數組,但是然後我需要文件行某種方式分離成兩個基團 - 與< 0量具有> 0量線和線(量爲從不爲0)。

回答

2

你可以試試這個:

markerIDX = ammount > 0; 

plot(xindays(markerIDX), y(markerIDX), 'go','MarkerSize',6,'LineWidth',3); 
plot(xindays(~markerIDX), y(~markerIDX), 'ro','MarkerSize',6,'LineWidth',3); 

但是請注意,這僅適用於如果xindaysy,並且ammount大小相同的。

+0

我不明白怎麼回事,但它的作品,謝謝! '〜markerIDX'的結果是什麼,這個'〜'操作是什麼? – javapowered 2012-07-28 13:46:55

+0

代字符運算符'~'是邏輯'not'。在'markerIDX'中,所有'ammount> 0'都有的索引,'〜markerIDX'中的所有索引都是'ammount> 0'不存在的索引,即ammount <= 0。 – 2012-07-28 14:35:02

1

您也可以使用GSCATTER功能從統計工具箱:

group = ammount > 0; 
h = gscatter(xindays, y, group, 'gr', 'o', 6); 
set(h, 'LineWidth',3) 
legend(h, {'group 1','group 2'}) 
相關問題