Matlab 如何在不同颜色的图形上绘制标记

Matlab 如何在不同颜色的图形上绘制标记,matlab,plot,markers,Matlab,Plot,Markers,我现在有这样的代码: 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}]

我现在有这样的代码:

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的行和数量的行。您可以尝试以下方法:

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
amount
大小相同的情况

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

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

我不明白它是怎么工作的,谢谢!
~markerIDX
的结果是什么,这个
~
操作是什么?tilde操作符
~
是逻辑
而不是
。在
markerIDX
中是
amount>0
保存的所有索引,
~markerIDX
中是
amount>0
不保存的所有索引,即
amount