Я думаю, это потому, что вы не закрываете свой патч - если последняя точка в вашем патче не совпадает с первой, MATLAB автоматически закроет его.Видимо, это делает что-то странное с интерполяцией цвета.Если вы немного измените код, чтобы ваш патч был закрыт, например:
figure;
order = [1:4,1];
patch(x(order),y(order),c(order));
figure;
order = [2:4,1:2];
patch(x(order),y(order),c(order));
figure;
order = [3:4,1:3];
patch(x(order),y(order),c(order));
Тогда вы получите один и тот же патч каждый раз.