我正在绘制分段函数,我想知道是否有可能为函数的每个部分更改行的颜色? 例如,有黄色,红色和绿色。
x = -10: 0.01: 10;
for k = 1 : length(x)
if x(k) < -1
y(k) = x(k)+2;
elseif -1<=x(k) && x(k)<= 2
y(k) = x(k).^2;
else
y(k) = -2*x(k)+8;
end
end
plot(x, y);
答案 0 :(得分:4)
如果你想要不同的颜色,你需要分别绘制每个部分。
最灵活的方法是定义部分限制,计算一个索引,告诉每个x
属于哪个部分(下面的代码中为ind
),并根据该指数的价值:
limits = [-1 2];
ind = sum(bsxfun(@ge, x(:).', limits(:)),1); %'// how many values in limits are exceeded or
% // equalled by each x. Indicates portion
hold on %// or hold all in old Matlab versions
for n = 0:numel(limits)
plot(x(ind==n), y(ind==n)) %// plot portion
end
如果要指定每个部分的线型或颜色,请定义字符串的单元格数组,并在每次调用plot
时使用不同的字符串:
limits = [-1 2];
linespec = {'r-','b:','g-.'}; %// should contain 1+numel(limits) elements
ind = sum(bsxfun(@ge, x(:).', limits(:)),1); %'
hold on
for n = 0:numel(limits)
plot(x(ind==n), y(ind==n), linespec{n+1})
end