我现在有这样的代码:
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);
它工作正常但它总是创建绿色标记。如果金额> 1,我需要创建绿色标记0否则我想创建红色标记。怎么做?
可能我应该创建单独的xGreen
,xRed
,yGreen
,yRed
数组,但是我需要以某种方式将文件行分成两组 - 使用>行0金额和行数< 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);
但请注意,这只适用于xindays
,y
和ammount
大小相同的情况。
答案 1 :(得分:1)
您还可以使用统计工具箱中的GSCATTER功能:
group = ammount > 0;
h = gscatter(xindays, y, group, 'gr', 'o', 6);
set(h, 'LineWidth',3)
legend(h, {'group 1','group 2'})