2012-07-28 84 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'}) 
相关问题