绘制分段函数。改变颜色?

时间:2015-09-15 15:58:22

标签: matlab graphics graph plot matlab-figure

我正在绘制分段函数,我想知道是否有可能为函数的每个部分更改行的颜色? 例如,有黄色,红色和绿色。

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);

1 个答案:

答案 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

enter image description here

如果要指定每个部分的线型或颜色,请定义字符串的单元格数组,并在每次调用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