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,我需要创建绿色标记,否则我想创建红色标记。怎么做?

可能我应该创建单独xGreen的 , xRed, yGreen,yRed数组,但是我需要以某种方式将文件行分成两组 - 数量 > 0 的行和数量 <0 的行(数量永远不是 0)。

4

2 回答 2

2

你可以试试这个:

markerIDX = ammount > 0;

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

但是请注意,这只适用于xindaysyammount的大小相同的情况。

于 2012-07-28T12:06:33.610 回答
1

您还可以使用统计工具箱中的GSCATTER函数:

group = ammount > 0;
h = gscatter(xindays, y, group, 'gr', 'o', 6);
set(h, 'LineWidth',3)
legend(h, {'group 1','group 2'})
于 2012-07-29T01:07:31.130 回答